Как наследовать класс от сборки, не заставляя пользователей ссылаться на две сборки - PullRequest
2 голосов
/ 19 января 2009

У меня есть два класса A и B в двух разных сборках .NET: AssemblyA и AssemblyB.

Я хочу, чтобы класс B наследовал класс A, но я хочу, чтобы класс B использовался только для ссылки на AssemblyB (а не на AssemblyA и AssemblyB).

Из-за ограничений проекта мне нужно хранить две сборки отдельно, поэтому я не могу использовать инструмент слияния для объединения двух сборок.

Обратите внимание, что фактическое наследование классов не является обязательным - я хочу, чтобы логика A запускалась в AssemblyB как часть класса B с минимальным переписыванием функциональности.

Есть ли способ сделать это?

1 Ответ

9 голосов
/ 19 января 2009

Нет. Подумайте об этом таким образом - предположим, вы набрали следующее:

public class B : A
{
      public void Foo()
      {
            this.// Cursor is here
      }
}

Как вы ожидаете, что Intellisense узнает, что доступно, если не знает, что в классе A? Как компилятор сможет проверять вызовы методов и т. Д.

У вас есть , чтобы знать о родительских классах на протяжении всей цепочки наследования. Это означает ссылку на оба проекта. Если вы не хотите этого делать, не используйте наследование - заставьте B составлять A вместо того, чтобы наследовать от него. Пользователям все еще понадобится двоичный файл для A, доступный во время выполнения, но я не думаю , что им потребуется добавить ссылку в Visual Studio. (С другой стороны, если они собираются отлаживать код, они, возможно, захотят в любом случае убедиться, что бинарный файл находится в нужном месте ...)

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