Краткая версия: я пытаюсь настроить сериализацию через границу AppDomain, в частности, для обработки случаев, когда каждая сторона AppDomain имеет немного другую версию класса. Как мне это сделать?
Расширенная версия: мы используем AppDomains для управления различными подмодулями в рамках более крупного приложения. Мы хотим развернуть эти подмодули независимо, отсюда и использование доменов приложений. У нас есть общая dll контрактов между основным приложением и подмодулями, разные версии dll контрактов могут попадать в различные подмодули, поскольку каждый из них обновляется реже, чем основное приложение. В результате иногда новое поле или новый тип добавляется в 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);
Спасибо за помощь в этом вопросе.