Краткая версия: Я пытаюсь настроить сериализацию по интерфейсу AppDomain, в частности, для обработки случаев, когда каждая сторона AppDomain имеет немного отличающуюся версию класса. Как мне это сделать?Пользовательская сериализация через AppDomain
Длинная версия: Мы используем AppDomains для управления различными подмодулями под большим приложением. Мы хотим развернуть эти подмодули независимо, следовательно, использовать 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);
Спасибо за помощь в этом.
Thanks Frank. Это, скорее всего, является нашим долговременным ответом, и я думаю, что смогу обойти наш текущий вопрос, поскольку на данный момент у нас только 1 подмодуль. –