5 // Nick Drochak II (ndrochak@gol.com)
6 // Gonzalo Paniagua (gonzalo@ximian.com)
8 // (C) 2001 Nick Drochak II
9 // (c) 2002 Ximian, Inc. (http://www.ximian.com)
12 using System.Runtime.Remoting;
13 using System.Reflection;
14 using System.Globalization;
15 using System.Security.Policy;
19 public sealed class Activator
21 private static BindingFlags _flags = BindingFlags.CreateInstance |
23 BindingFlags.Instance;
25 private Activator () {}
28 public static ObjectHandle CreateComInstanceFrom (string assemblyName, string typeName)
30 throw new NotImplementedException();
33 public static ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName)
35 return CreateInstanceFrom (assemblyFile, typeName, null);
38 public static ObjectHandle CreateInstanceFrom (string assemblyFile,
40 object [] activationAttributes)
42 return Activator.CreateInstanceFrom (assemblyFile,
54 public static ObjectHandle CreateInstanceFrom (string assemblyFile,
57 BindingFlags bindingAttr,
61 object [] activationAttributes,
62 Evidence securityInfo)
64 //TODO: when Assembly implements security, use it.
65 //Assembly assembly = Assembly.LoadFrom (assemblyFile, securityInfo);
66 Assembly assembly = Assembly.LoadFrom (assemblyFile);
70 Type type = assembly.GetType (typeName, true, ignoreCase);
74 object obj = CreateInstance (type, bindingAttr, binder, args, culture, activationAttributes);
75 return (obj != null) ? new ObjectHandle (obj) : null;
78 public static ObjectHandle CreateInstance (string assemblyName, string typeName)
80 return Activator.CreateInstance (assemblyName, typeName, null);
83 public static ObjectHandle CreateInstance (string assemblyName,
85 object [] activationAttributes)
87 return Activator.CreateInstance (assemblyName,
99 public static ObjectHandle CreateInstance (string assemblyName,
102 BindingFlags bindingAttr,
106 object [] activationAttributes,
107 Evidence securityInfo)
109 //TODO: when Assembly implements security, use it.
110 //Assembly assembly = Assembly.Load (assemblyFile, securityInfo);
111 Assembly assembly = Assembly.Load (assemblyName);
112 Type type = assembly.GetType (typeName, true, ignoreCase);
113 object obj = CreateInstance (type, bindingAttr, binder, args, culture, activationAttributes);
114 return (obj != null) ? new ObjectHandle (obj) : null;
117 public static object CreateInstance (Type type)
119 return CreateInstance (type, false);
122 public static object CreateInstance (Type type, object [] args)
124 return CreateInstance (type, args, new object [0]);
128 public static object CreateInstance (Type type, object [] args, object [] activationAttributes)
130 // activationAttributes?
132 throw new ArgumentNullException ("type");
136 length = args.Length;
138 Type [] atypes = new Type [length];
139 for (int i = 0; i < length; ++i) {
140 atypes [i] = args [i].GetType ();
142 ConstructorInfo ctor = type.GetConstructor (atypes);
146 return ctor.Invoke (args);
149 public static object CreateInstance (Type type,
150 BindingFlags bindingAttr,
155 return CreateInstance (type, bindingAttr, binder, args, culture, new object [0]);
159 public static object CreateInstance (Type type,
160 BindingFlags bindingAttr,
164 object [] activationAttributes)
166 // activationAttributes?
169 length = args.Length;
171 Type[] atypes = new Type [length];
172 for (int i = 0; i < length; ++i) {
173 atypes [i] = args [i].GetType ();
175 //FIXME: when GetConstructor works with this parameter list, use it
176 //ConstructorInfo ctor = type.GetConstructor (bindingAttr, binder, atypes, null);
177 ConstructorInfo ctor = type.GetConstructor (atypes);
181 //FIXME: when Invoke allows this parameter list, use it
182 //return ctor.Invoke (args, bindingAttr, binder, args, culture);
183 return ctor.Invoke (args);
186 public static object CreateInstance (Type type, bool nonPublic)
189 throw new ArgumentNullException ("type");
191 ConstructorInfo ctor = type.GetConstructor (Type.EmptyTypes);
192 if (ctor.IsPublic && nonPublic == true)
198 return ctor.Invoke (null);
202 public static object GetObject (Type type, string url)
204 throw new NotImplementedException();
208 public static object GetObject (Type type, string url, object state)
210 throw new NotImplementedException();