Author: atsushi
Date: 2007-09-13 05:38:52 -0400 (Thu, 13 Sep 2007)
New Revision: 85731
Modified:
trunk/mcs/class/corlib/System/Activator.cs
trunk/mcs/class/corlib/System/ChangeLog
trunk/mcs/class/corlib/Test/System/ActivatorTest.cs
trunk/mcs/class/corlib/Test/System/ChangeLog
Log:
2007-09-13 Atsushi Enomoto <[EMAIL PROTECTED]>
* Activator.cs : implemented 2.0 CreateInstance()
and CreateInstanceFrom () overloads.
* ActivatorTest.cs : new tests for cross-domain
CreateInstance().
Modified: trunk/mcs/class/corlib/System/Activator.cs
===================================================================
--- trunk/mcs/class/corlib/System/Activator.cs 2007-09-13 09:27:59 UTC (rev
85730)
+++ trunk/mcs/class/corlib/System/Activator.cs 2007-09-13 09:38:52 UTC (rev
85731)
@@ -150,6 +150,57 @@
}
#if NET_2_0
+ [MonoNotSupported ("no ClickOnce in mono")]
+ public static ObjectHandle CreateInstance (ActivationContext
activationContext)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoNotSupported ("no ClickOnce in mono")]
+ public static ObjectHandle CreateInstance (ActivationContext
activationContext, string [] activationCustomData)
+ {
+ throw new NotImplementedException ();
+ }
+
+ // Cross-domain instance creation
+
+ public static ObjectHandle CreateInstanceFrom (AppDomain
domain, string assemblyFile, string typeName)
+ {
+ if (domain == null)
+ throw new ArgumentNullException ("domain");
+ return domain.CreateInstanceFrom (assemblyFile,
typeName);
+ }
+
+ public static ObjectHandle CreateInstanceFrom (AppDomain
domain, string assemblyFile, string typeName,
+ bool ignoreCase,
BindingFlags bindingAttr, Binder binder,
+ object [] args,
CultureInfo culture,
+ object []
activationAttributes,
+ Evidence
securityAttributes)
+ {
+ if (domain == null)
+ throw new ArgumentNullException ("domain");
+
+ return domain.CreateInstanceFrom (assemblyFile,
typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes,
securityAttributes);
+ }
+
+ public static ObjectHandle CreateInstance (AppDomain domain,
string assemblyName, string typeName)
+ {
+ if (domain == null)
+ throw new ArgumentNullException ("domain");
+ return domain.CreateInstance (assemblyName, typeName);
+ }
+
+ public static ObjectHandle CreateInstance (AppDomain domain,
string assemblyName, string typeName,
+ bool ignoreCase,
BindingFlags bindingAttr, Binder binder,
+ object [] args,
CultureInfo culture,
+ object []
activationAttributes,
+ Evidence
securityAttributes)
+ {
+ if (domain == null)
+ throw new ArgumentNullException ("domain");
+ return domain.CreateInstance (assemblyName, typeName,
ignoreCase, bindingAttr, binder, args, culture, activationAttributes,
securityAttributes);
+ }
+
public static T CreateInstance <T> ()
{
return (T) CreateInstance (typeof (T));
Modified: trunk/mcs/class/corlib/System/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/System/ChangeLog 2007-09-13 09:27:59 UTC (rev
85730)
+++ trunk/mcs/class/corlib/System/ChangeLog 2007-09-13 09:38:52 UTC (rev
85731)
@@ -1,3 +1,8 @@
+2007-09-13 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * Activator.cs : implemented 2.0 CreateInstance()
+ and CreateInstanceFrom () overloads.
+
2007-09-12 Sebastien Pouliot <[EMAIL PROTECTED]>
* Decimal.cs: More explicit text in exception (old and almost
Modified: trunk/mcs/class/corlib/Test/System/ActivatorTest.cs
===================================================================
--- trunk/mcs/class/corlib/Test/System/ActivatorTest.cs 2007-09-13 09:27:59 UTC
(rev 85730)
+++ trunk/mcs/class/corlib/Test/System/ActivatorTest.cs 2007-09-13 09:38:52 UTC
(rev 85731)
@@ -356,6 +356,47 @@
Assert.IsNotNull (Activator.CreateInstance (typeof
(foo1<int>)), "foo1<int>");
Assert.IsNotNull (Activator.CreateInstance (typeof
(foo2<long, int>)), "foo2<long, int>");
}
+
+ [Test]
+ public void CreateInstanceCrossDomain ()
+ {
+ Activator.CreateInstance (AppDomain.CurrentDomain,
"mscorlib.dll", "System.Object");
+ Activator.CreateInstance (AppDomain.CurrentDomain,
"mscorlib.dll", "System.Object", false,
+ BindingFlags.Public |
BindingFlags.Instance, null, null, CultureInfo.InvariantCulture,
+ null, null);
+ // FIXME: below works as a standalone case, but does
not as a unit test (causes JIT error).
+ Activator.CreateInstance (AppDomain.CreateDomain
("foo"), "mscorlib.dll", "System.Object", false,
+ BindingFlags.Public |
BindingFlags.Instance, null, null, null,
+ null, null);
+ }
+
+ [Test]
+ public void CreateInstanceCrossDomainNonSerializableArgs ()
+ {
+ // I'm not sure why this is possible ...
+ Activator.CreateInstance (AppDomain.CurrentDomain,
"mscorlib.dll", "System.WeakReference", false,
+ BindingFlags.Public |
BindingFlags.Instance, null, new object [] {ModuleHandle.EmptyHandle}, null,
null, null);
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void CreateInstanceNonSerializableAtts ()
+ {
+ // even on invalid success it causes different
exception though.
+ Activator.CreateInstance ("mscorlib.dll",
"System.Object", false,
+ BindingFlags.Public |
BindingFlags.Instance, null, null, null,
+ new object []
{ModuleHandle.EmptyHandle}, null);
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void CreateInstanceCrossDomainNonSerializableAtts ()
+ {
+ // even on invalid success it causes different
exception though.
+ Activator.CreateInstance (AppDomain.CurrentDomain,
"mscorlib.dll", "System.Object", false,
+ BindingFlags.Public |
BindingFlags.Instance, null, null, null,
+ new object []
{ModuleHandle.EmptyHandle}, null);
+ }
#endif
}
}
Modified: trunk/mcs/class/corlib/Test/System/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/Test/System/ChangeLog 2007-09-13 09:27:59 UTC
(rev 85730)
+++ trunk/mcs/class/corlib/Test/System/ChangeLog 2007-09-13 09:38:52 UTC
(rev 85731)
@@ -1,3 +1,8 @@
+2007-09-13 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * ActivatorTest.cs : new tests for cross-domain
+ CreateInstance().
+
2007-08-24 Jb Evain <[EMAIL PROTECTED]>
* TypeTest.cs: Add tests for AssemblyQualifiedName for
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches