c# - AppDomain 中 Enum 的奇怪 SerializationException

标签 c# .net serialization appdomain

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

System.Runtime.Serialization.SerializationException: Type is not resolved for member '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 中的“类型未解析”是什么意思,为什么会抛出异常?默认情况下枚举不是可序列化的吗?

最佳答案

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

关于c# - AppDomain 中 Enum 的奇怪 SerializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2227870/

相关文章:

c# - 在 C# 中将 int[] 转换为 byte[]

c# - 从 COM .dll 获取错误 '80070002'

asp.net - 如何同步多个Azure网站实例的数据

c# - 使用 Newtonsoft.Json 反序列化 Json 数组

python - 如何在 Django REST Framework 中序列化与自身的递归关系?

powershell - PowerShell 是否支持 HashTable 序列化?

c# - 尝试实现主明细表时出错

c# - 如何使用c#从azure存储容器恢复数据库

c# - SynchronizedCollection<T> 和其他并发集合之间有什么区别?

c# - MS Test 是否提供默认值等于比较?