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

Reply via email to