|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
??? Dynamically loading a generic type ???I have a generic type that I need in another app domain? How can I do this?
I was trying to call CreateInstanceAndUnwrap, but it fails since I can't figure out how to tell it which T (type) to use when creating? Is there some other way to create a generic type in an app domain? Amil "Amil Hanish" <amilhan***@hotmail.com> wrote in message Just examine an instance of the Type you are trying to create to get its news:#m5H14QXHHA.1016@TK2MSFTNGP04.phx.gbl... >I have a generic type that I need in another app domain? How can I do >this? > > I was trying to call CreateInstanceAndUnwrap, but it fails since I can't > figure out how to tell it which T (type) to use when creating? Is there > some other way to create a generic type in an app domain? > assembly name and type name: EG public class Program { class Foo<T> : MarshalByRefObject { public T t; public string MyDomain { get { return AppDomain.CurrentDomain.FriendlyName; } } } class Bar { } public static void Main(string[] args) { try { AppDomain d = AppDomain.CreateDomain("new domain"); Type t = typeof(Foo<Bar>); Console.WriteLine(t.FullName); Foo<Bar> remote = (Foo<Bar>)d.CreateInstanceAndUnwrap(t.Assembly.FullName, t.FullName); Console.WriteLine(remote.MyDomain); } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine("Hit any key to exit"); Console.ReadKey(); } } David Perfect! Many thanks!
Amil Show quote "David Browne" <davidbaxterbrowne no potted m***@hotmail.com> wrote in message news:%23AgwEQSXHHA.4624@TK2MSFTNGP03.phx.gbl... > > > "Amil Hanish" <amilhan***@hotmail.com> wrote in message > news:#m5H14QXHHA.1016@TK2MSFTNGP04.phx.gbl... >>I have a generic type that I need in another app domain? How can I do >>this? >> >> I was trying to call CreateInstanceAndUnwrap, but it fails since I can't >> figure out how to tell it which T (type) to use when creating? Is there >> some other way to create a generic type in an app domain? >> > > Just examine an instance of the Type you are trying to create to get its > assembly name and type name: > > EG > > public class Program > { > > class Foo<T> : MarshalByRefObject > { > public T t; > public string MyDomain > { > get { return AppDomain.CurrentDomain.FriendlyName; } > } > } > > class Bar > { > } > > > public static void Main(string[] args) > { > try > { > AppDomain d = AppDomain.CreateDomain("new domain"); > Type t = typeof(Foo<Bar>); > > Console.WriteLine(t.FullName); > Foo<Bar> remote = > (Foo<Bar>)d.CreateInstanceAndUnwrap(t.Assembly.FullName, t.FullName); > Console.WriteLine(remote.MyDomain); > > } > catch (Exception ex) > { > Console.WriteLine(ex); > } > Console.WriteLine("Hit any key to exit"); > Console.ReadKey(); > } > } > > David |
|||||||||||||||||||||||