【发布时间】:2016-12-07 20:24:34
【问题描述】:
我知道有很多类似的答案,但没有一个适合我。我有一个名为 MyLibrary 的类库。它只有一种类型。我将在另一个 appdomain 中创建一个我的类型的实例,这就是我不使用 Activator 的原因。
public class Test
{
public Test()
{
Console.WriteLine("Ctor of Test type.");
}
public void Hello(string name)
{
Console.WriteLine($"Hello {name}! I'm an instance method.");
}
}
我创建了一个简单的控制台应用程序。这是 Main 方法的代码。
static void Main(string[] args)
{
string path = @"example of my path";
AppDomain domain = AppDomain.CreateDomain("mydomain");
Assembly mylibrary = Assembly.LoadFrom(path);
Type typeOfTest = mylibrary.GetType("MyLibrary.Test");
var instanceOfTest = domain.CreateInstanceFrom(path, typeOfTest.FullName);
MethodInfo hello = typeOfTest.GetMethod("Hello");
hello.Invoke(instanceOfTest, new object[] {"Bob"});
}
调用Hello方法的正确方法是什么?我可以从测试类型创建和调用静态方法,但我对非静态实例方法无能为力?
【问题讨论】:
标签: c# reflection appdomain