X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Reflection%2FMonoEvent.cs;h=093e203cf600d22b103538baadf51d619fb3f523;hb=089b4086dc4639288dec762546b729d9080fc81a;hp=9ddc79b4adb15efced067ae442851e3bce6b6905;hpb=d49951ccf584ba637afb1dab7fff714478e3174d;p=mono.git diff --git a/mcs/class/corlib/System.Reflection/MonoEvent.cs b/mcs/class/corlib/System.Reflection/MonoEvent.cs index 9ddc79b4adb..093e203cf60 100644 --- a/mcs/class/corlib/System.Reflection/MonoEvent.cs +++ b/mcs/class/corlib/System.Reflection/MonoEvent.cs @@ -8,7 +8,7 @@ // // -// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// Copyright (C) 2004, 2009 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -31,9 +31,11 @@ // using System; +using System.Collections.Generic; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Runtime.Serialization; namespace System.Reflection { @@ -48,55 +50,57 @@ namespace System.Reflection { public MethodInfo[] other_methods; [MethodImplAttribute(MethodImplOptions.InternalCall)] - internal static extern void get_event_info (MonoEvent ev, out MonoEventInfo info); + static extern void get_event_info (MonoEvent ev, out MonoEventInfo info); + + internal static MonoEventInfo GetEventInfo (MonoEvent ev) + { + MonoEventInfo mei; + MonoEventInfo.get_event_info (ev, out mei); + return mei; + } } - internal sealed class MonoEvent: EventInfo { + [Serializable] + internal sealed class MonoEvent: EventInfo, ISerializable + { +#pragma warning disable 169 IntPtr klass; IntPtr handle; +#pragma warning restore 169 public override EventAttributes Attributes { get { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - - return info.attrs; + return MonoEventInfo.GetEventInfo (this).attrs; } } - public override MethodInfo GetAddMethod(bool nonPublic) { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - - + public override MethodInfo GetAddMethod (bool nonPublic) + { + MonoEventInfo info = MonoEventInfo.GetEventInfo (this); if (nonPublic || (info.add_method != null && info.add_method.IsPublic)) return info.add_method; return null; } - public override MethodInfo GetRaiseMethod( bool nonPublic) { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - + public override MethodInfo GetRaiseMethod (bool nonPublic) + { + MonoEventInfo info = MonoEventInfo.GetEventInfo (this); if (nonPublic || (info.raise_method != null && info.raise_method.IsPublic)) return info.raise_method; return null; } - public override MethodInfo GetRemoveMethod( bool nonPublic) { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - + public override MethodInfo GetRemoveMethod (bool nonPublic) + { + MonoEventInfo info = MonoEventInfo.GetEventInfo (this); if (nonPublic || (info.remove_method != null && info.remove_method.IsPublic)) return info.remove_method; return null; } -#if NET_2_0 - public override MethodInfo[] GetOtherMethods (bool nonPublic) { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - + public override MethodInfo[] GetOtherMethods (bool nonPublic) + { + MonoEventInfo info = MonoEventInfo.GetEventInfo (this); if (nonPublic) return info.other_methods; int num_public = 0; @@ -114,32 +118,22 @@ namespace System.Reflection { } return res; } -#endif public override Type DeclaringType { get { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - - return info.declaring_type; + return MonoEventInfo.GetEventInfo (this).declaring_type; } } public override Type ReflectedType { get { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - - return info.reflected_type; + return MonoEventInfo.GetEventInfo (this).reflected_type; } } public override string Name { get { - MonoEventInfo info; - MonoEventInfo.get_event_info (this, out info); - - return info.name; + return MonoEventInfo.GetEventInfo (this).name; } } @@ -163,5 +157,17 @@ namespace System.Reflection { return MonoCustomAttrs.GetCustomAttributes (this, attributeType, inherit); } + // ISerializable + public void GetObjectData (SerializationInfo info, StreamingContext context) + { + MemberInfoSerializationHolder.Serialize (info, Name, ReflectedType, + ToString(), MemberTypes.Event); + } + +#if NET_4_0 + public override IList GetCustomAttributesData () { + return CustomAttributeData.GetCustomAttributes (this); + } +#endif } }