本文整理汇总了C#中System.Reflection.Emit.EnumBuilder.GetCustomAttributes方法的典型用法代码示例。如果您正苦于以下问题:C# EnumBuilder.GetCustomAttributes方法的具体用法?C# EnumBuilder.GetCustomAttributes怎么用?C# EnumBuilder.GetCustomAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.Emit.EnumBuilder
的用法示例。
在下文中一共展示了EnumBuilder.GetCustomAttributes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MyAttribute
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class MyAttribute : Attribute
{
public String myString;
public int myInteger;
public MyAttribute(String myString1, int myInteger1)
{
this.myString = myString1;
this.myInteger = myInteger1;
}
}
class MyApplication
{
static AssemblyBuilder myAssemblyBuilder;
static EnumBuilder myEnumBuilder;
public static void Main()
{
try
{
CreateCallee(Thread.GetDomain());
if(myEnumBuilder.IsDefined(typeof(MyAttribute),false))
{
object[] myAttributesArray = myEnumBuilder.GetCustomAttributes(typeof(MyAttribute),false);
Console.WriteLine("Custom attribute contains: ");
// Read the attributes and display them on the console.
for(int index=0; index < myAttributesArray.Length; index++)
{
if(myAttributesArray[index] is MyAttribute)
{
Console.WriteLine("The value of myString is: "
+ ((MyAttribute)myAttributesArray[index]).myString);
Console.WriteLine("The value of myInteger is: "
+ ((MyAttribute)myAttributesArray[index]).myInteger);
}
}
}
else
{
Console.WriteLine("Custom Attributes are not set for the EnumBuilder");
}
}
catch(Exception e)
{
Console.WriteLine("The following exception is raised:" +e.Message);
}
}
private static void CreateCallee(AppDomain domain)
{
// Create a name for the assembly.
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "EmittedAssembly";
// Create the dynamic assembly.
myAssemblyBuilder = domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run);
Type myType = typeof(MyAttribute);
ConstructorInfo myInfo = myType.GetConstructor(new Type[2]{typeof(String), typeof(int)});
CustomAttributeBuilder myCustomAttributeBuilder =
new CustomAttributeBuilder(myInfo, new object[2]{"Hello", 2});
// Create a dynamic module.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule");
// Create a dynamic Enum.
myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.MyEnum", TypeAttributes.Public, typeof(Int32));
FieldBuilder myFieldBuilder1 = myEnumBuilder.DefineLiteral("FieldOne", 1);
FieldBuilder myFieldBuilder2 = myEnumBuilder.DefineLiteral("FieldTwo", 2);
myEnumBuilder.CreateType();
myEnumBuilder.SetCustomAttribute(myCustomAttributeBuilder);
}
}
示例2: MyAttribute
//引入命名空间
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class MyAttribute : Attribute
{
public bool myBoolValue;
public MyAttribute(bool myBool)
{
this.myBoolValue = myBool;
}
}
class MyApplication
{
static EnumBuilder myEnumBuilder;
public static void Main()
{
try
{
CreateCallee(Thread.GetDomain());
object[] myAttributesArray = myEnumBuilder.GetCustomAttributes(true);
// Read the attributes and display them on the console.
Console.WriteLine("Custom attribute contains: ");
for(int index=0; index < myAttributesArray.Length; index++)
{
if(myAttributesArray[index] is MyAttribute)
{
Console.WriteLine("myBoolValue: " +
((MyAttribute)myAttributesArray[index]).myBoolValue);
}
}
}
catch(Exception e)
{
Console.WriteLine("The following exception is raised:" +e.Message);
}
}
private static void CreateCallee(AppDomain domain)
{
AssemblyName myAssemblyName = new AssemblyName();
// Create a name for the assembly.
myAssemblyName.Name = "EmittedAssembly";
// Create the dynamic assembly.
AssemblyBuilder myAssemblyBuilder
= domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run);
Type myType = typeof(MyAttribute);
ConstructorInfo myInfo = myType.GetConstructor(new Type[]{typeof(bool)});
// Create a dynamic module.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule");
// Create a dynamic Enum.
myEnumBuilder =
myModuleBuilder.DefineEnum("MyNamespace.MyEnum", TypeAttributes.Public, typeof(Int32));
FieldBuilder myFieldBuilder1 = myEnumBuilder.DefineLiteral("FieldOne", 1);
FieldBuilder myFieldBuilder2 = myEnumBuilder.DefineLiteral("FieldTwo", 2);
myEnumBuilder.CreateType();
myEnumBuilder.SetCustomAttribute(myInfo, new byte[]{01,00,01});
}
}