110,534
社区成员
发帖
与我相关
我的任务
分享
[WebMethod]
public string ko()
{
AppDomain ad = AppDomain.CreateDomain("Classes");
ProxyObject obj = (ProxyObject)ad.CreateInstanceFromAndUnwrap(@"D:/messageDll/Classes.dll", "com.ms.AbcTest2"); // 这一步就提示错误System.Runtime.Serialization.SerializationException: 未解析成员
obj.LoadAssembly();
string strResult=obj.Invoke(@"D:/messageDll/Classes.dll", "HelloWorld").ToString();
AppDomain.Unload(ad);
return strResult;
}
namespace com.ms
{
[Serializable]
public class AbcTest2 : ILogicalThreadAffinative
{
public AbcTest2()
{
//
// TODO: Add constructor logic here
//
}
public string HelloWorld()
{
return "Hello World ahhahahahahahah";
}
}
}
using System.Reflection;
Assembly ass = Assembly.Load("testdll"); //加载dll文件
Type tp = ass.GetType("testdll.MyClass"); //获取类名,必须 命名空间+类名
Object obj = Activator.CreateInstance(tp,"男"); //建立实例
PropertyInfo meth = tp.GetProperty("Six"); //获取方法
Console.WriteLine(meth.GetValue(obj,null)); //Invoke调用方法
//.dll文件要放在bin\debug文件夹下
<C#入门经典4>812页
var appDomain = AppDomain.CreateDomain("MyDomain");
var obj = appDomain.CreateInstanceFromAndUnwrap(@"MyTestLib.dll", "MyTestLib.Class1");
var result = obj.GetType().GetMethod("Foo").Invoke(obj, null);
Console.WriteLine(result);
//MyTestLib.dll
namespace MyTestLib
{
public class Class1
{
public string Foo()
{
return "MyTestLib.Class1.Foo";
}
}
}
ProxyObject obj = (ProxyObject)ad.CreateInstanceFromAndUnwrap(@"D:/messageDll/Classes.dll", "com.ms.AbcTest2");
// 这一步就提示错误System.Runtime.Serialization.SerializationException: 未解析成员
var appDomain = AppDomain.CreateDomain("MyDomain");
var obj = appDomain.CreateInstanceFromAndUnwrap(@"MyTestLib.dll", "MyTestLib.Class1");
var result = obj.GetT……
[/Quote]
反射呀。
AppDomain appDomain = AppDomain.CreateDomain("MyDomain");
object obj = appDomain.CreateInstanceFromAndUnwrap(@"MyTestLib.dll", "MyTestLib.Class1");
object result = obj.GetType().GetMethod("Foo").Invoke(obj, null);
Console.WriteLine(result);
//MyTestLib.dll
namespace MyTestLib
{
public class Class1
{
public string Foo()
{
return "MyTestLib.Class1.Foo";
}
}
}