当前位置: 首页>>代码示例>>C#>>正文


C# EnumBuilder.GetCustomAttributes方法代码示例

本文整理汇总了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);
   }
}
开发者ID:.NET开发者,项目名称:System.Reflection.Emit,代码行数:77,代码来源:EnumBuilder.GetCustomAttributes

示例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});
   }
}
开发者ID:.NET开发者,项目名称:System.Reflection.Emit,代码行数:72,代码来源:EnumBuilder.GetCustomAttributes


注:本文中的System.Reflection.Emit.EnumBuilder.GetCustomAttributes方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。