AppDomain中Enum的奇怪SerializationException

时间:2010-02-09 09:09:50

标签: c# .net serialization appdomain

从一个AppDomain调用另一个AppDomain时,我收到了一个枚举的SerializationException:

  

System.Runtime.Serialization.SerializationException:   成员未解析类型   'Dummy.MyEnum,Dummy,Version = 1.0.0.0,   Culture = neutral,PublicKeyToken = null'。

示例代码:

public enum MyEnum
{    
  A = 0,    
  B = 1,    
  C = 2,
}

public class FooBar : MarshalByRefObject
{
  public void Test1(MyEnum dummy)
  {
  }

  public void Test2(object dummy)
  {
  }
}

此调用将抛出异常:

 getFooBarInOtherAppDomain().Test1(MyEnum.A);

使用任何其他可序列化类型时,它会成功:

 getFooBarInOtherAppDomain().Test2(0);

调用者,被调用者和枚举在同一个程序集中定义。

.Net意味着“类型未解决”,为什么抛出异常?默认情况下,枚举不是可序列化的吗?

1 个答案:

答案 0 :(得分:1)

每个AppDomain都有自己的程序集探测路径,使用AppDomainSetup类进行配置。主AppDomain的app.config文件。在您的情况下,它看起来像是要查找要加载的程序集,但与用于序列化数据的程序集不同。它找到的那个缺少枚举类型。使用Fuslogvw.exe对此进行故障排除,它可以让您查看正在解析的程序集。