简短版本:我正在尝试自定义跨 AppDomain 边界的序列化,特别是为了处理 AppDomain 的每一侧都有稍微不同的类版本的情况。我该怎么做呢?
长版:我们使用 AppDomains 来管理更大应用程序下的不同子模块。我们希望独立部署这些子模块,因此使用 AppDomains。我们在主应用程序和子模块之间有一个共享的contracts dll,不同版本的contracts dll 最终会出现在各个子模块中,因为每个子模块的更新频率都低于主应用程序。结果,有时会在contracts dll中添加一个新字段或新类型,并在主应用程序中使用,但子模块不知道如何序列化它。
我想我可以通过自定义序列化过程来解决这个问题,特别是 SerializationBinder.BindToType。但是要做到这一点,我需要告诉 AppDomain 的每一端都使用这个序列化绑定器。我该怎么做呢?我在网上看到的所有示例都有对 Serialize() 和 Deserialize() 的显式调用。我初始化 AppDomain 的代码是:
var appDomainSetup = new AppDomainSetup
{
ApplicationBase = config.BasePath,
ShadowCopyFiles = "true",
ConfigurationFile = File.Exists(configPath) ? configPath : null,
};
AppDomain.CreateDomain("myappdomain", null, appDomainSetup);
感谢您在这方面的帮助。