信息
您所需的主题如下所示。但此主题未包含在此库中。

EventAttributes 枚举

2013/12/13

指定事件的特性。

此枚举具有一个 FlagsAttribute 属性,该属性允许对其成员值进行按位组合。

Namespace:  System.Reflection
程序集:  mscorlib(位于 mscorlib.dll 中)

[FlagsAttribute]
public enum EventAttributes

成员名称说明
None指定该事件不具有特性。
ReservedMask指定仅供公共语言运行时使用的保留标志。
RTSpecialName指定公共语言运行时应检查名称编码。
SpecialName指定事件特殊,具体之处由名称描述。

使用按位“或”运算可组合 EventAttributes 值以获取相应的组合。

下面的示例使用反射发出创建具有两个事件的类型。它使用 EventAttributes.None 指定事件没有特性。

说明注意:

要运行此示例,请参见生成具有静态 Windows Phone TextBlock 控件的示例


using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;


public class Example
{
   public delegate void MyEvent(Object temp);
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      TypeBuilder helloWorldClass = CreateCallee(Thread.GetDomain());

      EventInfo[] info =
         helloWorldClass.GetEvents(BindingFlags.Public | BindingFlags.Instance);
      outputBlock.Text += "'HelloWorld' type has following events :" + "\n";
      for (int i = 0; i < info.Length; i++)
         outputBlock.Text += info[i].Name + "\n";
   }

   // Create the callee transient dynamic assembly.
   private static TypeBuilder CreateCallee(AppDomain myDomain)
   {
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "EmittedAssembly";

      // Create the callee dynamic assembly.
      AssemblyBuilder myAssembly =
         myDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
      // Create a dynamic module named "CalleeModule" in the callee.
      ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule");

      // Define a public class named "HelloWorld" in the assembly.
      TypeBuilder helloWorldClass =
         myModule.DefineType("HelloWorld", TypeAttributes.Public);

      MethodBuilder myMethod1 = helloWorldClass.DefineMethod("OnClick",
         MethodAttributes.Public, typeof(void), new Type[] { typeof(Object) });
      ILGenerator methodIL1 = myMethod1.GetILGenerator();
      methodIL1.Emit(OpCodes.Ret);
      MethodBuilder myMethod2 = helloWorldClass.DefineMethod("OnMouseUp",
         MethodAttributes.Public, typeof(void), new Type[] { typeof(Object) });
      ILGenerator methodIL2 = myMethod2.GetILGenerator();
      methodIL2.Emit(OpCodes.Ret);

      // Create the events.
      EventBuilder myEvent1 = helloWorldClass.DefineEvent("Click", EventAttributes.None,
         typeof(MyEvent));
      myEvent1.SetRaiseMethod(myMethod1);
      EventBuilder myEvent2 = helloWorldClass.DefineEvent("MouseUp", EventAttributes.None,
         typeof(MyEvent));
      myEvent2.SetRaiseMethod(myMethod2);

      helloWorldClass.CreateType();
      return (helloWorldClass);
   }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: