在.exe重命名后使用本地参数调用远程appdomain方法时的参数异常

时间:2015-01-29 16:12:41

标签: c# .net appdomain

我在C#中编写了一个程序,它在另一个appdomain中加载它自己的程序集:

AppDomain otherAppDomain = AppDomain.CreateDomain("otherDomain");
otherAppDomain.Load(Assembly.GetExecutingAssembly().GetName());

在原始的AppDomain中,我正在创建一个对象(Anchor anchor),并在调用另一个appDomain的对象的方法时将其用作参数。

Anchor anchor = new Anchor();
RemoteObject ro = (RemoteObject)otherAppDomain.CreateInstanceFromAndUnwrap(Application.ExecutablePath, typeof(RemoteObject).FullName);
ro.DoStuffInTheOtherAppDomain(anchor); // <- Exception happens here

Anchor扩展了MarshalByRefObject并实现了一个接口。 Anchor和RemoteObject位于同一个程序集(执行程序集)中。

DoStuffInTheOtherAppDomain带有完整签名:public void DoStuffInTheOtherAppDomain(Anchor anchor)。

编译完代码后完全正常。但是,如果我重命名.exe文件(例如从a.exe到b.exe)我得到以下例外:

 System.ArgumentException: The object type cannot be converted to the target type

我在第二个代码块中标记了异常发生的位置。

为什么会发生这种情况,即使我重命名我的.exe也有办法避免它?

0 个答案:

没有答案