Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by [EMAIL PROTECTED]

http://bugzilla.ximian.com/show_bug.cgi?id=77002

--- shadow/77002        2005-12-16 07:50:45.000000000 -0500
+++ shadow/77002.tmp.8650       2006-03-14 19:20:36.000000000 -0500
@@ -70,6 +70,75 @@
 
 I think, actually, that this can/should be handled completely in the
 library: SRE.AssemblyBuilder.SetCustomAttribute, or SRE.ModuleBuilder.
 
 Ankit, you may want to look at the second link above and try to see
 what metadata tables are needed to implement this feature.
+
+------- Additional Comments From [EMAIL PROTECTED]  2006-03-14 19:20 -------
+I added support for this to the runtime. gmcs can use the new
+internal AssemblyBuilder.AddTypeForwarder () method to register type 
+forwarders.
+
+Here are the test cases I used:
+
+<<<<<<<<<<<<<< forward1.cs >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+public class Foo
+{
+}
+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+<<<<<<<<<<<<<<< test.cs >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+using System;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Runtime.CompilerServices;
+
+public class Test {
+
+    public static void Main(string[] args) {
+               Assembly a = Assembly.LoadFrom ("forward1.dll");
+               Type forwardedType = a.GetType ("Foo");
+
+        AppDomain currentDomain = AppDomain.CurrentDomain;
+       AssemblyName asmName = new AssemblyName();
+       asmName.Name = "forward2";
+       string asmFileName = "forward2.dll";
+       AssemblyBuilder asmBuilder =
+       currentDomain.DefineDynamicAssembly(asmName, 
+           AssemblyBuilderAccess.RunAndSave);
+        ModuleBuilder builder = 
+           asmBuilder.DefineDynamicModule("_Created.netmodule", asmFileName);
+
+               typeof (AssemblyBuilder).GetMethod ("AddTypeForwarder",
+BindingFlags.NonPublic|BindingFlags.Instance).Invoke (asmBuilder, new
+Object [] { forwardedType });
+
+       asmBuilder.Save(asmFileName);
+    }
+}
+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+<<<<<<<<<<<<<<<<<<<<<< forward3.cs >>>>>>>>>>>>>>>>>>>>>>>>>
+
+using System;
+using System.Reflection;
+
+public class Tests {
+
+       public static void Main () {
+               Assembly a = Assembly.LoadFrom ("forward2.dll");
+               Console.WriteLine (a.GetType ("Foo"));
+               Console.WriteLine (a.GetType ("Foo").Assembly);
+       }
+}
+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+Usage:
+
+gmcs /target:library forward1.cs
+gmcs test.cs
+mono test.exe
+gmcs forward3.cs
+mono forward3.exe
+
+
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to