如何从另一个appDomain调用类的方法

我的应用程序想要调用来自另一个AppDomain的类的方法。

AppDomain env = AppDomain.CreateDomain( "test", null, new AppDomainSetup() { ApplicationName = "test" } ); Assembly a = Assembly.LoadFrom("d:\\testenv1\\test2.dll"); //env.AssemblyResolve += new ResolveEventHandler(env_AssemblyResolve); env.Load(a.FullName); ObjectHandle o = env.CreateInstance(a.FullName, "Test2.Class1"); 

现在我有Test2.Class1的对象句柄,但我不知道如何调用Class1类的“action”方法。

“action”方法喜欢这个:

  public void action() { Console.WriteLine(AppDomain.CurrentDomain.FriendlyName + " ok"); } 

我试图使用o.unwrap()方法来获取对象的引用,但似乎对象已被转移到当前域,因此“action”方法的输出打印当前域名。

将要用于跨appdomain通信的对象标记为MarshalByRefObject 。