MonoEvent.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //
  2. // System.Reflection/MonoEvent.cs
  3. //
  4. // Author:
  5. // Paolo Molaro ([email protected])
  6. //
  7. // (C) 2001 Ximian, Inc. http://www.ximian.com
  8. //
  9. using System;
  10. using System.Reflection;
  11. using System.Runtime.CompilerServices;
  12. using System.Runtime.InteropServices;
  13. namespace System.Reflection {
  14. internal struct MonoEventInfo {
  15. public Type parent;
  16. public String name;
  17. public MethodInfo add_method;
  18. public MethodInfo remove_method;
  19. public MethodInfo raise_method;
  20. public EventAttributes attrs;
  21. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  22. internal static extern void get_event_info (MonoEvent ev, out MonoEventInfo info);
  23. }
  24. internal sealed class MonoEvent: EventInfo {
  25. IntPtr klass;
  26. IntPtr handle;
  27. public override EventAttributes Attributes {
  28. get {
  29. MonoEventInfo info;
  30. MonoEventInfo.get_event_info (this, out info);
  31. return info.attrs;
  32. }
  33. }
  34. public override MethodInfo GetAddMethod(bool nonPublic) {
  35. MonoEventInfo info;
  36. MonoEventInfo.get_event_info (this, out info);
  37. return info.add_method;
  38. }
  39. public override MethodInfo GetRaiseMethod( bool nonPublic) {
  40. MonoEventInfo info;
  41. MonoEventInfo.get_event_info (this, out info);
  42. return info.raise_method;
  43. }
  44. public override MethodInfo GetRemoveMethod( bool nonPublic) {
  45. MonoEventInfo info;
  46. MonoEventInfo.get_event_info (this, out info);
  47. return info.remove_method;
  48. }
  49. public override Type DeclaringType {
  50. get {
  51. MonoEventInfo info;
  52. MonoEventInfo.get_event_info (this, out info);
  53. return info.parent;
  54. }
  55. }
  56. public override Type ReflectedType {
  57. get {
  58. MonoEventInfo info;
  59. MonoEventInfo.get_event_info (this, out info);
  60. return info.parent;
  61. }
  62. }
  63. public override string Name {
  64. get {
  65. MonoEventInfo info;
  66. MonoEventInfo.get_event_info (this, out info);
  67. return info.name;
  68. }
  69. }
  70. }
  71. }