EventAttributes Enumeration
Specifies the attributes of an event.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
Assembly: mscorlib (in mscorlib.dll)
| Member name | Description | |
|---|---|---|
| None | Specifies that the event has no attributes. | |
| ReservedMask | Specifies a reserved flag for common language runtime use only. | |
| RTSpecialName | Specifies that the common language runtime should check name encoding. | |
| SpecialName | Specifies that the event is special in a way described by the name. |
EventAttributes values may be combined using the bitwise OR operation to get the appropriate combination.
These enums are defined in the corhdr.h file and are a combination of bits and enumerators.
The following example uses reflection emit to create a type with two events. It uses EventAttributes.None to specify that the events have no attributes.
using System; using System.Threading; using System.Reflection; using System.Reflection.Emit; public class MyApplication { public delegate void MyEvent(Object temp); public static void Main() { TypeBuilder helloWorldClass = CreateCallee(Thread.GetDomain()); EventInfo[] info = helloWorldClass.GetEvents(BindingFlags.Public | BindingFlags.Instance); Console.WriteLine("'HelloWorld' type has following events :"); for(int i=0; i < info.Length; i++) Console.WriteLine(info[i].Name); } // 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); } }
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1