首页 > 解决方案 > 将“非序列化”对象传递给另一个没有序列化/反序列化的应用程序域(C#)

问题描述

在没有序列化/反序列化的情况下将“非序列化”对象传递给另一个 appdomain 的最佳方法是什么

更多细节:我将在新的 appdomain 中调用一个函数(来自外部程序集/插件)并将结果传递给主 appdomain(主程序)。但是(不幸的是)结果类型不可序列化,因此我遇到了 SerializationException

限制:

非序列化类型在外部程序集/dll 中。所以我不能用属性将它标记为可序列化。

标签: c#serializationdeserializationappdomainmarshalbyrefobject

解决方案


如果你想通过远程基础设施传递它,它必须是通过 ref 或可序列化的。

由于这种类型既不是你的选择有限:

  1. 在远程应用程序域中执行处理。
  2. 执行自定义序列化以传输您想要的数据(而不是对象)。例如,将值复制到可序列化的 DTO 类或使用序列化程序库。

推荐阅读