|
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
|
Tradução
Original
|
Classe CustomAttributeBuilder
Namespace: System.Reflection.Emit
Assembly: mscorlib (em mscorlib.dll)
O tipo CustomAttributeBuilder expõe os membros a seguir.
| Nome | Descrição | |
|---|---|---|
![]() | CustomAttributeBuilder(ConstructorInfo, Object[]) | |
![]() | CustomAttributeBuilder(ConstructorInfo, Object[], FieldInfo[], Object[]) | |
![]() | CustomAttributeBuilder(ConstructorInfo, Object[], PropertyInfo[], Object[]) | |
![]() | CustomAttributeBuilder(ConstructorInfo, Object[], PropertyInfo[], Object[], FieldInfo[], Object[]) |
| Nome | Descrição | |
|---|---|---|
![]() | Equals(Object) | |
![]() | Finalize | |
![]() | GetHashCode | |
![]() | GetType | |
![]() | MemberwiseClone | |
![]() | ToString |
| Nome | Descrição | |
|---|---|---|
![]() ![]() | _CustomAttributeBuilder.GetIDsOfNames | |
![]() ![]() | _CustomAttributeBuilder.GetTypeInfo | |
![]() ![]() | _CustomAttributeBuilder.GetTypeInfoCount | |
![]() ![]() | _CustomAttributeBuilder.Invoke |
Observação |
|---|
O atributo HostProtectionAttribute aplicado a este tipo ou membro tem o seguinte valor da propriedade Resources: MayLeakOnAbort. HostProtectionAttribute não afeta aplicativos de área de trabalho (que são normalmente iniciados com o clique duplo em um ícone, a digitação de um comando ou a inserção de uma URL em um navegador). Para obter mais informações, consulte a classe HostProtectionAttribute ou Atributos de proteção de Host e programação de SQL Server. |
using System; using System.Threading; using System.Reflection; using System.Reflection.Emit; // We will apply this custom attribute to our dynamic type. public class ClassCreator: Attribute { private string creator; public string Creator { get { return creator; } } public ClassCreator(string name) { this.creator = name; } } // We will apply this dynamic attribute to our dynamic method. public class DateLastUpdated: Attribute { private string dateUpdated; public string DateUpdated { get { return dateUpdated; } } public DateLastUpdated(string theDate) { this.dateUpdated = theDate; } } class MethodBuilderCustomAttributesDemo { public static Type BuildTypeWithCustomAttributesOnMethod() { AppDomain currentDomain = Thread.GetDomain(); AssemblyName myAsmName = new AssemblyName(); myAsmName.Name = "MyAssembly"; AssemblyBuilder myAsmBuilder = currentDomain.DefineDynamicAssembly( myAsmName, AssemblyBuilderAccess.Run); ModuleBuilder myModBuilder = myAsmBuilder.DefineDynamicModule("MyModule"); // First, we'll build a type with a custom attribute attached. TypeBuilder myTypeBuilder = myModBuilder.DefineType("MyType", TypeAttributes.Public); Type[] ctorParams = new Type[] { typeof(string) }; ConstructorInfo classCtorInfo = typeof(ClassCreator).GetConstructor(ctorParams); CustomAttributeBuilder myCABuilder = new CustomAttributeBuilder( classCtorInfo, new object[] { "Joe Programmer" }); myTypeBuilder.SetCustomAttribute(myCABuilder); // Now, let's build a method and add a custom attribute to it. MethodBuilder myMethodBuilder = myTypeBuilder.DefineMethod("HelloWorld", MethodAttributes.Public, null, new Type[] { }); ctorParams = new Type[] { typeof(string) }; classCtorInfo = typeof(DateLastUpdated).GetConstructor(ctorParams); CustomAttributeBuilder myCABuilder2 = new CustomAttributeBuilder( classCtorInfo, new object[] { DateTime.Now.ToString() }); myMethodBuilder.SetCustomAttribute(myCABuilder2); ILGenerator myIL = myMethodBuilder.GetILGenerator(); myIL.EmitWriteLine("Hello, world!"); myIL.Emit(OpCodes.Ret); return myTypeBuilder.CreateType(); } public static void Main() { Type myType = BuildTypeWithCustomAttributesOnMethod(); object myInstance = Activator.CreateInstance(myType); object[] customAttrs = myType.GetCustomAttributes(true); Console.WriteLine("Custom Attributes for Type 'MyType':"); object attrVal = null; foreach (object customAttr in customAttrs) { attrVal = typeof(ClassCreator).InvokeMember("Creator", BindingFlags.GetProperty, null, customAttr, new object[] { }); Console.WriteLine("-- Attribute: [{0} = \"{1}\"]", customAttr, attrVal); } Console.WriteLine("Custom Attributes for Method 'HelloWorld()' in 'MyType':"); customAttrs = myType.GetMember("HelloWorld")[0].GetCustomAttributes(true); foreach (object customAttr in customAttrs) { attrVal = typeof(DateLastUpdated).InvokeMember("DateUpdated", BindingFlags.GetProperty, null, customAttr, new object[] { }); Console.WriteLine("-- Attribute: [{0} = \"{1}\"]", customAttr, attrVal); } Console.WriteLine("---"); Console.WriteLine(myType.InvokeMember("HelloWorld", BindingFlags.InvokeMethod, null, myInstance, new object[] { })); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)
O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte .Requisitos de sistema do NET Framework.
