-//\r
-// System.Activator.cs\r
-//\r
-// Author:\r
-// Nick Drochak II (ndrochak@gol.com)\r
-//\r
-// (C) 2001 Nick Drochak II\r
-//\r
-\r
-using System.Runtime.Remoting;\r
-using System.Reflection;\r
-using System.Globalization;\r
-using System.Security.Policy;\r
-\r
-namespace System \r
-{\r
- // FIXME: This class is just stubs to get System.dll to compile\r
- public sealed class Activator\r
- {\r
- private Activator () {}\r
-\r
- [MonoTODO]\r
- public static ObjectHandle CreateComInstanceFrom(string assemblyName, \r
- string typeName) { \r
- throw new NotImplementedException(); \r
- }\r
-\r
- [MonoTODO]\r
- public static ObjectHandle CreateInstanceFrom(string assemblyFile, \r
- string typeName) { \r
- throw new NotImplementedException(); \r
- }\r
-\r
- [MonoTODO]\r
- public static ObjectHandle CreateInstanceFrom(string assemblyFile, \r
- string typeName, object[] activationAttributes) { \r
- throw new NotImplementedException(); \r
- }\r
- \r
- [MonoTODO]\r
- public static ObjectHandle CreateInstanceFrom(string assemblyFile, \r
- string typeName, bool ignoreCase, BindingFlags bindingAttr, \r
- Binder binder, object[] args, CultureInfo culture, object[] activationAttributes, \r
- Evidence securityInfo) { \r
- throw new NotImplementedException(); \r
- }\r
- \r
- [MonoTODO]\r
- public static ObjectHandle CreateInstance(string assemblyName, \r
- string typeName) { \r
- throw new NotImplementedException(); \r
- }\r
- \r
- [MonoTODO]\r
- public static ObjectHandle CreateInstance(string assemblyName, \r
- string typeName, object[] activationAttributes) { \r
- throw new NotImplementedException(); \r
- }\r
- \r
- [MonoTODO]\r
- public static ObjectHandle CreateInstance(string assemblyName, \r
- string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, \r
- object[] args, CultureInfo culture, object[] activationAttributes, \r
- Evidence securityInfo) { \r
- throw new NotImplementedException(); \r
- }\r
- \r
- public static object CreateInstance(Type type) {\r
- return CreateInstance (type, false);\r
- }\r
- \r
- public static object CreateInstance(Type type, object[] args) {\r
- return CreateInstance (type, args, new object [0]);\r
- }\r
-\r
- [MonoTODO]\r
- public static object CreateInstance(Type type, object[] args, object[] activationAttributes) {\r
- Type[] atypes = new Type [args.Length];\r
- for (int i = 0; i < args.Length; ++i) {\r
- atypes [i] = args [i].GetType ();\r
- }\r
- ConstructorInfo ctor = type.GetConstructor (atypes);\r
- return ctor.Invoke (args);\r
-\r
- }\r
-\r
- [MonoTODO]\r
- public static object CreateInstance(Type type, \r
- BindingFlags bindingAttr, Binder binder, object[] args, \r
- CultureInfo culture) { \r
- return CreateInstance (type, bindingAttr, binder, args, culture, new object [0]);\r
- }\r
-\r
- [MonoTODO]\r
- public static object CreateInstance(Type type, \r
- BindingFlags bindingAttr, Binder binder, object[] args, \r
- CultureInfo culture, object[] activationAttributes) { \r
- Type[] atypes = new Type [args.Length];\r
- for (int i = 0; i < args.Length; ++i) {\r
- atypes [i] = args [i].GetType ();\r
- }\r
- ConstructorInfo ctor = type.GetConstructor (bindingAttr, binder, atypes, null);\r
- return ctor.Invoke (args, bindingAttr, binder, args, culture);\r
- }\r
-\r
- [MonoTODO]\r
- public static object CreateInstance(Type type, bool nonPublic) { \r
- ConstructorInfo ctor = type.GetConstructor (Type.EmptyTypes);\r
- return ctor.Invoke (null);\r
- }\r
-\r
- [MonoTODO]\r
- public static object GetObject(Type type, \r
- string url) { \r
- throw new NotImplementedException(); \r
- }\r
-\r
- [MonoTODO]\r
- public static object GetObject(Type type, \r
- string url, object state) { \r
- throw new NotImplementedException(); \r
- }\r
- }\r
-}\r
+//
+// System.Activator.cs
+//
+// Authors:
+// Nick Drochak II (ndrochak@gol.com)
+// Gonzalo Paniagua (gonzalo@ximian.com)
+//
+// (C) 2001 Nick Drochak II
+// (c) 2002 Ximian, Inc. (http://www.ximian.com)
+//
+
+using System.Runtime.Remoting;
+using System.Reflection;
+using System.Globalization;
+using System.Security.Policy;
+
+namespace System
+{
+ public sealed class Activator
+ {
+ private static BindingFlags _flags = BindingFlags.CreateInstance |
+ BindingFlags.Public |
+ BindingFlags.Instance;
+
+ private Activator () {}
+
+ [MonoTODO]
+ public static ObjectHandle CreateComInstanceFrom (string assemblyName, string typeName)
+ {
+ throw new NotImplementedException();
+ }
+
+ public static ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName)
+ {
+ return CreateInstanceFrom (assemblyFile, typeName, null);
+ }
+
+ public static ObjectHandle CreateInstanceFrom (string assemblyFile,
+ string typeName,
+ object [] activationAttributes)
+ {
+ return Activator.CreateInstanceFrom (assemblyFile,
+ typeName,
+ false,
+ _flags,
+ null,
+ null,
+ null,
+ activationAttributes,
+ null);
+ }
+
+ [MonoTODO]
+ public static ObjectHandle CreateInstanceFrom (string assemblyFile,
+ string typeName,
+ bool ignoreCase,
+ BindingFlags bindingAttr,
+ Binder binder,
+ object [] args,
+ CultureInfo culture,
+ object [] activationAttributes,
+ Evidence securityInfo)
+ {
+ //TODO: when Assembly implements security, use it.
+ //Assembly assembly = Assembly.LoadFrom (assemblyFile, securityInfo);
+ Assembly assembly = Assembly.LoadFrom (assemblyFile);
+ Type type = assembly.GetType (typeName, true, ignoreCase);
+ object obj = CreateInstance (type, bindingAttr, binder, args, culture, activationAttributes);
+ return (obj != null) ? new ObjectHandle (obj) : null;
+ }
+
+ public static ObjectHandle CreateInstance (string assemblyName, string typeName)
+ {
+ return Activator.CreateInstance (assemblyName, typeName, null);
+ }
+
+ public static ObjectHandle CreateInstance (string assemblyName,
+ string typeName,
+ object [] activationAttributes)
+ {
+ return Activator.CreateInstance (assemblyName,
+ typeName,
+ false,
+ _flags,
+ null,
+ null,
+ null,
+ activationAttributes,
+ null);
+ }
+
+ [MonoTODO]
+ public static ObjectHandle CreateInstance (string assemblyName,
+ string typeName,
+ bool ignoreCase,
+ BindingFlags bindingAttr,
+ Binder binder,
+ object [] args,
+ CultureInfo culture,
+ object [] activationAttributes,
+ Evidence securityInfo)
+ {
+ //TODO: when Assembly implements security, use it.
+ //Assembly assembly = Assembly.Load (assemblyFile, securityInfo);
+ Assembly assembly = Assembly.Load (assemblyName);
+ Type type = assembly.GetType (typeName, true, ignoreCase);
+ object obj = CreateInstance (type, bindingAttr, binder, args, culture, activationAttributes);
+ return (obj != null) ? new ObjectHandle (obj) : null;
+ }
+
+ public static object CreateInstance (Type type)
+ {
+ return CreateInstance (type, false);
+ }
+
+ public static object CreateInstance (Type type, object [] args)
+ {
+ return CreateInstance (type, args, new object [0]);
+ }
+
+ [MonoTODO]
+ public static object CreateInstance (Type type, object [] args, object [] activationAttributes)
+ {
+ // activationAttributes?
+ if (type == null)
+ throw new ArgumentNullException ("type");
+
+ if (args == null)
+ throw new ArgumentNullException ("args");
+
+ Type [] atypes = new Type [args.Length];
+ for (int i = 0; i < args.Length; ++i) {
+ atypes [i] = args [i].GetType ();
+ }
+ ConstructorInfo ctor = type.GetConstructor (atypes);
+ if (ctor == null)
+ return null;
+
+ return ctor.Invoke (args);
+ }
+
+ public static object CreateInstance (Type type,
+ BindingFlags bindingAttr,
+ Binder binder,
+ object [] args,
+ CultureInfo culture)
+ {
+ return CreateInstance (type, bindingAttr, binder, args, culture, new object [0]);
+ }
+
+ [MonoTODO]
+ public static object CreateInstance (Type type,
+ BindingFlags bindingAttr,
+ Binder binder,
+ object [] args,
+ CultureInfo culture,
+ object [] activationAttributes)
+ {
+ // activationAttributes?
+ Type[] atypes = new Type [args.Length];
+ for (int i = 0; i < args.Length; ++i) {
+ atypes [i] = args [i].GetType ();
+ }
+ ConstructorInfo ctor = type.GetConstructor (bindingAttr, binder, atypes, null);
+ if (ctor == null)
+ return null;
+
+ return ctor.Invoke (args, bindingAttr, binder, args, culture);
+ }
+
+ public static object CreateInstance (Type type, bool nonPublic)
+ {
+ if (type == null)
+ throw new ArgumentNullException ("type");
+
+ ConstructorInfo ctor = type.GetConstructor (Type.EmptyTypes);
+ if (ctor.IsPublic && nonPublic == true)
+ return null;
+
+ if (ctor == null)
+ return null;
+
+ return ctor.Invoke (null);
+ }
+
+ [MonoTODO]
+ public static object GetObject (Type type, string url)
+ {
+ throw new NotImplementedException();
+ }
+
+ [MonoTODO]
+ public static object GetObject (Type type, string url, object state)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
+
// Paolo Molaro (lupus@ximian.com)
// Dietmar Maurer (dietmar@ximian.com)
// Miguel de Icaza (miguel@ximian.com)
+// Gonzalo Paniagua (gonzalo@ximian.com)
//
// (C) 2001, 2002 Ximian, Inc. http://www.ximian.com
//
public ObjectHandle CreateInstance (string assemblyName, string typeName)
{
- return CreateInstance (assemblyName, typeName, false, 0,
- null, null, null, null, null);
+ if (assemblyName == null)
+ throw new ArgumentNullException ("assemblyName");
+
+ return Activator.CreateInstance (assemblyName, typeName);
}
public ObjectHandle CreateInstance (string assemblyName, string typeName,
object[] activationAttributes)
{
- return CreateInstance (assemblyName, typeName, false, 0,
- null, null, null, activationAttributes, null);
+ if (assemblyName == null)
+ throw new ArgumentNullException ("assemblyName");
+
+ return Activator.CreateInstance (assemblyName, typeName, activationAttributes);
}
- [MonoTODO]
public ObjectHandle CreateInstance (string assemblyName,
string typeName,
bool ignoreCase,
object[] args,
CultureInfo culture,
object[] activationAttributes,
- Evidence securityAttribtutes)
+ Evidence securityAttributes)
{
- throw new NotImplementedException ();
+ if (assemblyName == null)
+ throw new ArgumentNullException ("assemblyName");
+
+ return Activator.CreateInstance (assemblyName,
+ typeName,
+ ignoreCase,
+ bindingAttr,
+ binder,
+ args,
+ culture,
+ activationAttributes,
+ securityAttributes);
+ }
+
+ public object CreateInstanceAndUnwrap (string assemblyName, string typeName)
+ {
+ ObjectHandle oh = CreateInstance (assemblyName, typeName);
+ return (oh != null) ? oh.Unwrap () : null;
+ }
+
+ public object CreateInstanceAndUnwrap (string assemblyName,
+ string typeName,
+ object [] activationAttributes)
+ {
+ ObjectHandle oh = CreateInstance (assemblyName, typeName, activationAttributes);
+ return (oh != null) ? oh.Unwrap () : null;
+ }
+
+ public object CreateInstanceAndUnwrap (string assemblyName,
+ string typeName,
+ bool ignoreCase,
+ BindingFlags bindingAttr,
+ Binder binder,
+ object[] args,
+ CultureInfo culture,
+ object[] activationAttributes,
+ Evidence securityAttributes)
+ {
+ ObjectHandle oh = CreateInstance (assemblyName,
+ typeName,
+ ignoreCase,
+ bindingAttr,
+ binder,
+ args,
+ culture,
+ activationAttributes,
+ securityAttributes);
+ return (oh != null) ? oh.Unwrap () : null;
}
public ObjectHandle CreateInstanceFrom (string assemblyName, string typeName)
{
- return CreateInstanceFrom (assemblyName, typeName, false, 0,
- null, null, null, null, null);
+ if (assemblyName == null)
+ throw new ArgumentNullException ("assemblyName");
+
+ return Activator.CreateInstanceFrom (assemblyName, typeName);
}
public ObjectHandle CreateInstanceFrom (string assemblyName, string typeName,
object[] activationAttributes)
{
- return CreateInstanceFrom (assemblyName, typeName, false, 0,
- null, null, null, activationAttributes, null);
+ if (assemblyName == null)
+ throw new ArgumentNullException ("assemblyName");
+
+ return Activator.CreateInstanceFrom (assemblyName, typeName, activationAttributes);
}
- [MonoTODO]
public ObjectHandle CreateInstanceFrom (string assemblyName,
string typeName,
bool ignoreCase,
object[] args,
CultureInfo culture,
object[] activationAttributes,
- Evidence securityAttribtutes)
+ Evidence securityAttributes)
{
- throw new NotImplementedException ();
+ if (assemblyName == null)
+ throw new ArgumentNullException ("assemblyName");
+
+ return Activator.CreateInstanceFrom (assemblyName,
+ typeName,
+ ignoreCase,
+ bindingAttr,
+ binder,
+ args,
+ culture,
+ activationAttributes,
+ securityAttributes);
+ }
+
+ public object CreateInstanceFromAndUnwrap (string assemblyName, string typeName)
+ {
+ ObjectHandle oh = CreateInstanceFrom (assemblyName, typeName);
+ return (oh != null) ? oh.Unwrap () : null;
+ }
+
+ public object CreateInstanceFromAndUnwrap (string assemblyName,
+ string typeName,
+ object [] activationAttributes)
+ {
+ ObjectHandle oh = CreateInstanceFrom (assemblyName, typeName, activationAttributes);
+ return (oh != null) ? oh.Unwrap () : null;
+ }
+
+ public object CreateInstanceFromAndUnwrap (string assemblyName,
+ string typeName,
+ bool ignoreCase,
+ BindingFlags bindingAttr,
+ Binder binder,
+ object[] args,
+ CultureInfo culture,
+ object[] activationAttributes,
+ Evidence securityAttributes)
+ {
+ ObjectHandle oh = CreateInstanceFrom (assemblyName,
+ typeName,
+ ignoreCase,
+ bindingAttr,
+ binder,
+ args,
+ culture,
+ activationAttributes,
+ securityAttributes);
+ return (oh != null) ? oh.Unwrap () : null;
}
public AssemblyBuilder DefineDynamicAssembly (AssemblyName name,