Принудительно использовать определенный интерфейс при создании объекта - PullRequest
0 голосов
/ 04 марта 2019

Я работаю с библиотекой, которая дает мне доступ к удаленной машине.

Эта библиотека отсутствует как минимум 10 лет, и со временем они добавили в нее несколько выборок для нескольких объектов;чтобы сделать это, не нарушая совместимость (по крайней мере, я так думаю), они разработали несколько интерфейсов, которые реализованы следующим образом:

//Version 1.0:
interface First
{
    void AMethod();
}

//Version 1.1:
interface Second : First
{
    void AMethod();
    void AnotherMethod();
}

//Version 1.2:
interface Third : Second
{
    void AMethod();
    void AnotherMethod();
    void AlsoAnotherMethod();
}

//Version 1.3:
interface Fourth : Third
{
    void AMethod();
    void AnotherMethod();
    void AlsoAnotherMethod();
    void EvenMoreMethod();
}
------------------------------------------------------------

//Version 1.3:
public InterfaceImplementor : Fourth
{
    //code that do stuff
}

Проблема в том, что теперь мне нужно подключиться к машинеон действительно старый, и использование объекта как есть возвращает «неожиданную ошибку», которая не дает мне никакой информации для отладки.

Итак, я подумал: возможно ли заставить объект реализоватьконкретный интерфейс вдоль дерева зависимостей / наследования?Это должно быть возможно, так как каждый интерфейс переопределяет каждый метод (конечно, если я решу реализовать интерфейс First, тогда я смогу использовать только AMethod()), я прав?

Я не могу ни изменить интерфейсы, ни извлечь новый объект из интерфейса First, так как это оболочка C # для библиотеки c ++, которая содержит Who-знает-что, и, очевидно, ей нужно больше, чем просто NewObject : First.

Спасибо за ваше время.

...