Расширение общедоступных интерфейсов SDK без разрушения старых скомпилированных приложений SDK и новой среды выполнения - PullRequest
0 голосов
/ 16 мая 2018

Наш продукт имеет SDK и часть времени выполнения.SDK динамически загружает dll времени выполнения, чтобы мы могли отправлять улучшения времени выполнения без перекомпиляции старых приложений.

У меня есть интерфейс в библиотеке sdk, mysdk.dll, MyInterface1.Фактическая реализация - MyClass1 в myruntime.dll.

Теперь я хочу добавить новый метод foo в MyInterface1 и использовать во время выполнения код myruntime.dll.Однако старые приложения ломаются, так как старые MyInterface1 не имеют foo.Как правильно расширить MyInterface1, не ломая старые приложения?

Я думал о добавлении другого интерфейса MyInterface2, унаследованного от MyInterace1, и использовании obj is MyInterface2 или просмотре поля version в MyInterface1.Однако во время выполнения это снова не выполняется, поскольку MyInterface2 отсутствует в более старом SDK.

Как правильно расширить интерфейс общедоступного SDK, чтобы старые приложения по-прежнему работали?

Iсчитаю, что эта проблема распространена на всех языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...