dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/runtime/System/Reflection MemberInfoS


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/runtime/System/Reflection MemberInfoSerializationHolder.cs, 1.1, 1.2
Date: Fri, 22 Aug 2003 00:14:16 -0400

Update of /cvsroot/dotgnu-pnet/pnetlib/runtime/System/Reflection
In directory subversions:/tmp/cvs-serv7297/runtime/System/Reflection

Modified Files:
        MemberInfoSerializationHolder.cs 
Log Message:


De-serialization support for member reflection classes.


Index: MemberInfoSerializationHolder.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Reflection/MemberInfoSerializationHolder.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** MemberInfoSerializationHolder.cs    22 Aug 2003 03:04:07 -0000      1.1
--- MemberInfoSerializationHolder.cs    22 Aug 2003 04:14:14 -0000      1.2
***************
*** 40,45 ****
        private String name;
        private String signature;
!       private String assemblyName;
!       private String className;
  
        // Constructor.
--- 40,44 ----
        private String name;
        private String signature;
!       private Type containingType;
  
        // Constructor.
***************
*** 54,59 ****
                                name = info.GetString("Name");
                                signature = info.GetString("Signature");
!                               assemblyName = info.GetString("AssemblyName");
!                               className = info.GetString("ClassName");
                        }
  
--- 53,72 ----
                                name = info.GetString("Name");
                                signature = info.GetString("Signature");
!                               String assemblyName = 
info.GetString("AssemblyName");
!                               String className = info.GetString("ClassName");
!                               if(assemblyName == null || className == null)
!                               {
!                                       throw new SerializationException
!                                               (_("Serialize_StateMissing"));
!                               }
!                               Assembly assembly = 
FormatterServices.GetAssemblyByName
!                                       (assemblyName);
!                               if(assembly == null)
!                               {
!                                       throw new SerializationException
!                                               (_("Serialize_StateMissing"));
!                               }
!                               containingType = 
FormatterServices.GetTypeFromAssembly
!                                       (assembly, className);
                        }
  
***************
*** 80,88 ****
  
        // Implement the IObjectReference interface.
-       [TODO]
        public Object GetRealObject(StreamingContext context)
                        {
!                               // TODO
!                               return null;
                        }
  
--- 93,203 ----
  
        // Implement the IObjectReference interface.
        public Object GetRealObject(StreamingContext context)
                        {
!                               if(containingType == null || name == null ||
!                                  memberType == (MemberTypes)0)
!                               {
!                                       throw new SerializationException
!                                               (_("Serialize_StateMissing"));
!                               }
!                               switch(memberType)
!                               {
!                                       case MemberTypes.Constructor:
!                                       {
!                                               if(signature == null)
!                                               {
!                                                       throw new 
SerializationException
!                                                               
(_("Serialize_StateMissing"));
!                                               }
!                                               ConstructorInfo[] ctors;
!                                               ctors = 
containingType.GetConstructors
!                                                       (BindingFlags.Instance |
!                                                        BindingFlags.Static |
!                                                        BindingFlags.Public |
!                                                        
BindingFlags.NonPublic);
!                                               foreach(ConstructorInfo ctor in 
ctors)
!                                               {
!                                                       if(ctor.ToString() == 
signature)
!                                                       {
!                                                               return ctor;
!                                                       }
!                                               }
!                                       }
!                                       break;
! 
!                                       case MemberTypes.Event:
!                                       {
!                                               EventInfo eventInfo = 
containingType.GetEvent
!                                                       (name, 
BindingFlags.Instance |
!                                                                  
BindingFlags.Static |
!                                                                  
BindingFlags.Public |
!                                                                  
BindingFlags.NonPublic);
!                                               if(eventInfo != null)
!                                               {
!                                                       return eventInfo;
!                                               }
!                                       }
!                                       break;
! 
!                                       case MemberTypes.Field:
!                                       {
!                                               FieldInfo field = 
containingType.GetField
!                                                       (name, 
BindingFlags.Instance |
!                                                                  
BindingFlags.Static |
!                                                                  
BindingFlags.Public |
!                                                                  
BindingFlags.NonPublic);
!                                               if(field != null)
!                                               {
!                                                       return field;
!                                               }
!                                       }
!                                       break;
! 
!                                       case MemberTypes.Method:
!                                       {
!                                               if(signature == null)
!                                               {
!                                                       throw new 
SerializationException
!                                                               
(_("Serialize_StateMissing"));
!                                               }
!                                               MethodInfo[] methods;
!                                               methods = 
containingType.GetMethods
!                                                       (BindingFlags.Instance |
!                                                        BindingFlags.Static |
!                                                        BindingFlags.Public |
!                                                        
BindingFlags.NonPublic);
!                                               foreach(MethodInfo method in 
methods)
!                                               {
!                                                       if(method.ToString() == 
signature)
!                                                       {
!                                                               return method;
!                                                       }
!                                               }
!                                       }
!                                       break;
! 
!                                       case MemberTypes.Property:
!                                       {
!                                               PropertyInfo property = 
containingType.GetProperty
!                                                       (name, 
BindingFlags.Instance |
!                                                                  
BindingFlags.Static |
!                                                                  
BindingFlags.Public |
!                                                                  
BindingFlags.NonPublic);
!                                               if(property != null)
!                                               {
!                                                       return property;
!                                               }
!                                       }
!                                       break;
! 
!                                       default:
!                                       {
!                                               throw new ArgumentException
!                                                       
(_("Arg_InvalidMemberObject"));
!                                       }
!                                       // Not reached.
!                               }
!                               throw new SerializationException
!                                       (_("Arg_InvalidMemberObject"));
                        }
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]