Частичные классы в отдельных DLL - программирование
Подтвердить что ты не робот

Частичные классы в отдельных DLL

Возможно ли иметь две части (такое же пространство имен, одно имя класса) для частичного класса в отдельных DLL?

4b9b3361

Ответ 1

Из MSDN-Классы и методы:

Все определения частичного типа, предназначенные для быть частью того же типа, должно быть определенных в одной и той же тот же модуль (файл .exe или .dll). Частичные определения не могут несколько модулей.

Ответ 2

Нет. Частичные классы - это чисто языковая функция. Когда сборка скомпилирована, файлы объединяются для создания типа. Невозможно распространять файлы на разные сборки.

В зависимости от того, что вы хотите сделать, вы могли бы использовать методы расширения, чтобы выполнить то, что вам нужно.

Ответ 3

Нет, это невозможно. Когда сборка скомпилирована, класс должен быть завершен.

Ответ 4

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

Ответ 5

В то время как другие ответы дают неприятное "Нет", что любой, кто заходил на эту страницу, не хотел видеть или слышать, я был поражен другой мыслью, которая еще не была здесь упомянута. Если бы частичные классы были разрешены для разных сборок, можно было бы получить доступ к закрытым членам существующих типов, которые он не написал, что позволило бы ему манипулировать ими способами, которые не были предназначены первоначальным автором, что поставило под угрозу функциональность всех наследующих классов тоже.

Мало того, эти классы в других сборках (и их дочерние элементы) необходимо будет перекомпилировать, чтобы это работало. Таким образом, логически невозможно разрешить разбиение класса на разные сборки.

Ответ 6

Вопрос в том, почему вы хотите сделать частичный класс в другой сборке? Вы можете определить абстрактные классы и интерфейсы между сборками, возможно, вам нужно изучить это.

Ответ 7

Вы, вероятно, просто хотите создать класс Wrapper в своей собственной библиотеке, вокруг класса в библиотеке 3-ей части. Затем добавьте любую функциональность в класс-оболочку.