내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

EventAttributes 열거형

2013-12-13

이벤트의 특성을 지정합니다.

이 열거형에는 멤버 값을 비트로 조합할 수 있는 FlagsAttribute 특성이 있습니다.

Namespace:  System.Reflection
어셈블리:  mscorlib(mscorlib.dll)

[FlagsAttribute]
public enum EventAttributes

멤버 이름설명
None이벤트에 특성이 포함되지 않도록 지정합니다.
ReservedMask공용 언어 런타임 전용의 예약 플래그를 지정합니다.
RTSpecialName공용 언어 런타임에서 이름 인코딩을 확인하도록 지정합니다.
SpecialName이름을 사용하여 설명하는 방법으로 이벤트를 지정합니다.

EventAttributes 값은 적절한 결합을 가져오도록 비트 OR 연산을 사용하여 결합할 수 있습니다.

다음 예제에서는 리플렉션 내보내기를 사용하여 두 가지 이벤트가 있는 형식을 만듭니다. 이 예제에서는 이벤트에 아무런 특성이 없음을 지정하기 위해 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

표시:
© 2014 Microsoft