2 // System.Runtime.Serialization.FormatterServices
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
10 using System.Reflection;
12 namespace System.Runtime.Serialization
14 public sealed class FormatterServices
16 private FormatterServices ()
20 public static object [] GetObjectData (object obj, MemberInfo [] members)
23 throw new ArgumentNullException ("obj");
26 throw new ArgumentNullException ("members");
28 int n = members.Length;
29 object [] result = new object [n];
30 for (int i = 0; i < n; i++) {
31 MemberInfo member = members [i];
33 throw new ArgumentNullException (String.Format ("members[{0}]", i));
35 if (member.MemberType != MemberTypes.Field)
36 throw new SerializationException (
37 String.Format ("members [{0}] is not a field.", i));
39 FieldInfo fi = member as FieldInfo; //FIXME: Can fi be null?
40 result [i] = fi.GetValue (obj);
46 public static MemberInfo [] GetSerializableMembers (Type type)
48 StreamingContext st = new StreamingContext (StreamingContextStates.All);
49 return GetSerializableMembers (type, st);
53 public static MemberInfo [] GetSerializableMembers (Type type, StreamingContext context)
56 throw new ArgumentNullException ("type");
58 throw new NotImplementedException ();
62 public static Type GetTypeFromAssembly (Assembly assem, string name)
65 throw new ArgumentNullException ("assem");
68 throw new ArgumentNullException ("name");
70 return assem.GetType (name);
74 public static object GetUninitializedObject (Type type)
76 throw new NotImplementedException ();
79 public static object PopulateObjectMembers (object obj, MemberInfo [] members, object [] data)
82 throw new ArgumentNullException ("obj");
85 throw new ArgumentNullException ("members");
88 throw new ArgumentNullException ("data");
90 int length = members.Length;
91 if (length != data.Length)
92 throw new ArgumentException ("different length in members and data");
94 for (int i = 0; i < length; i++) {
95 MemberInfo member = members [i];
97 throw new ArgumentNullException (String.Format ("members[{0}]", i));
99 if (member.MemberType != MemberTypes.Field)
100 throw new SerializationException (
101 String.Format ("members [{0}] is not a field.", i));
103 FieldInfo fi = member as FieldInfo; //FIXME: can fi be null?
104 fi.SetValue (obj, data [i]);