新建程序域(AppDoMain)内如何用反射(Reflection)?
新建一个程序域,在里面进行反射。注意反射得到的程序集绝对不能给当前程序域
string path = "xxxxxxxxxxxxxx";
private void button1_Click(object sender, EventArgs e)
{
AppDomain.CurrentDomain.SetupInformation.LoaderOptimization = LoaderOptimization.SingleDomain;
AppDomain dom = AppDomain.CreateDomain("dom", null, AppDomain.CurrentDomain.SetupInformation);
//程序域dom内的反射
dom.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);//反射对象用了反序列化
//
//
//当前程序域内的反射
//
//AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);//反射对象用了反序列化
//Assembly ass = Assembly.Load(path);
//Form f=ass.CreateInstance("xx.yy") as Form;
//f.Show();
}
Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
return Assembly.LoadFile(path);
}
--------------------编程问答--------------------
LoadFile跟LoadFrom跟Load是完全不同的,不要混用。
补充:.NET技术 , C#