EventAttributes Enumeration
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Specifies the attributes of an event.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
Namespace: System.ReflectionAssembly: 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. |
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.
Note: |
|---|
To run this example, see Building examples that have static TextBlock controls for Windows Phone 8. |
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); } }
Note: