Предположим, у меня есть проект C#, который ссылается на dll, содержащую Class1. Из Project1 я хочу расширить функциональность Class1, используя класс Class2, который наследуется от Class1, а затем я хочу использовать Class2 всякий раз, когда ожидается Class1 (без изменения вызовов Class1, чтобы они указывали на Class2, это ключ).
Кроме того, я должен добавить, что Class1 - это модуль инициализации (в используемой мной структуре), который не вызывается явно (это часть внутреннего механизма). Это означает, что я не могу просто пойти и заменить вызовы Class1 на Class2 после того, как Class2 расширит поведение Class1 в моем коде.
(Как) этого можно достичь?
Еще одна идея, которая только что пришла мне в голову, — использовать частичные классы; однако я сомневаюсь, что полный класс может быть переопределен «позже» как частичный класс вне этой dll.
===== Позднее редактирование: я наткнулся на статью, которая, кажется, предполагает, что это возможно, и я пытаюсь понять, как это сделать. Смотрите, в этой статье RestrictFileTypes (Class2) наследуется от IInitializableModule (Class1), который находится в dll, но не говорится, как Class2 заменяет все вызовы Class1 с этого момента в будущем (http://world.episerver.com/blogs/al-higgs/dates/2012/11/Ограничениетиповфайлов/). Что вы об этом думаете?
var obj = new Class1()
и автоматически указывать наClass2
... без какого-либо приведения или чего-то еще? - person entropic   schedule 20.05.2016Injections
. - person Dmitriy Zapevalov   schedule 20.05.2016Framework
из исходников. Единственный способ состоит в том, чтоFramework
имеет какой-то специальный механизм для его расширения с помощью вашего класса. Итак, если вы уверены, что это возможно (есть и такие), вам следует задать вопрос относительно конкретныхFramework
и изучить документацию. - person Dmitriy Zapevalov   schedule 21.05.2016