3 // System.Reflection.Emit/EventBuilder.cs
6 // Paolo Molaro (lupus@ximian.com)
8 // (C) 2001 Ximian, Inc. http://www.ximian.com
12 using System.Reflection;
13 using System.Reflection.Emit;
14 using System.Globalization;
15 using System.Runtime.CompilerServices;
16 using System.Runtime.InteropServices;
18 namespace System.Reflection.Emit {
19 public sealed class EventBuilder {
23 CustomAttributeBuilder[] cattrs;
24 MethodBuilder add_method;
25 MethodBuilder remove_method;
26 MethodBuilder raise_method;
27 MethodBuilder[] other_methods;
28 EventAttributes attrs;
31 internal EventBuilder (TypeBuilder tb, string eventName, EventAttributes eventAttrs, Type eventType) {
36 table_idx = get_next_table_index (this, 0x14, true);
39 internal int get_next_table_index (object obj, int table, bool inc) {
40 return typeb.get_next_table_index (obj, table, inc);
43 public void AddOtherMethod( MethodBuilder mdBuilder) {
44 if (other_methods != null) {
45 MethodBuilder[] newv = new MethodBuilder [other_methods.Length + 1];
46 other_methods.CopyTo (newv, 0);
49 other_methods = new MethodBuilder [1];
51 other_methods [other_methods.Length - 1] = mdBuilder;
54 public EventToken GetEventToken () {
55 return new EventToken (0x14000000 | table_idx);
57 public void SetAddOnMethod( MethodBuilder mdBuilder) {
58 add_method = mdBuilder;
60 public void SetRaiseMethod( MethodBuilder mdBuilder) {
61 raise_method = mdBuilder;
63 public void SetRemoveOnMethod( MethodBuilder mdBuilder) {
64 remove_method = mdBuilder;
67 public void SetCustomAttribute( CustomAttributeBuilder customBuilder) {
69 CustomAttributeBuilder[] new_array = new CustomAttributeBuilder [cattrs.Length + 1];
70 cattrs.CopyTo (new_array, 0);
71 new_array [cattrs.Length] = customBuilder;
74 cattrs = new CustomAttributeBuilder [1];
75 cattrs [0] = customBuilder;
78 public void SetCustomAttribute( ConstructorInfo con, byte[] binaryAttribute) {
79 SetCustomAttribute (new CustomAttributeBuilder (con, binaryAttribute));