Suz*_*ron 3 c# remoting appdomain
如何调用我在另一个 AppDomain 中创建的对象的方法?我想避免使用CreateInstanceFromAndUnwrap,因为这需要我引用我想要操作的 DLL。
public static void Main() {
// Create domain
AppDomain domain = AppDomain.CreateDomain("Foo");
// Load assembly
domain.Load("C:\\Foo.dll");
// Create instance of class
System.Runtime.Remoting.ObjectHandle inst
= domain.CreateInstance("C:\\Foo.dll", "MyNamespace.MyClass");
// Call method -- How can I do this ???
object result = inst.PleaseCallMethod("MyMethod", "param1", 42, "p3", null);
}
Run Code Online (Sandbox Code Playgroud)
我会Foo.dll:
namespace MyNamespace {
public class MyClass {
public string MyMethod(string p1, int p2, string p3, string p4) {
return "...";
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,如果不首先创建包含静态方法的(可能是静态的)类的实例,我将如何调用静态方法?
您可以致电:
domain.DoCallBack(() => Console.WriteLine("DoCallBack: {0}", AppDomain.CurrentDomain.FriendlyName));
Run Code Online (Sandbox Code Playgroud)
但这需要将运行代码的程序集加载到新的应用程序域中。
如果您的新应用程序域具有不同的基本路径和/或需要新应用程序域中的运行时无法解析的程序集,您可能需要创建一个在 DoCallBack 中调用的独立入口程序集,并从该程序集加载程序集他们想要的位置。
| 归档时间: |
|
| 查看次数: |
5021 次 |
| 最近记录: |