Можно ли иметь две части (одно и то же пространство имен, одно и то же имя класса) в частичном классе в отдельных DLL?
Можно ли иметь две части (одно и то же пространство имен, одно и то же имя класса) в частичном классе в отдельных DLL?
Ответы:
Из MSDN - Частичные классы и методы :
Все определения частичного типа, которые должны быть частями одного и того же типа, должны быть определены в одной сборке и в одном и том же модуле (файл .exe или .dll). Частичные определения не могут охватывать несколько модулей.
Частичные занятия - это чисто языковая особенность. Когда сборка компилируется, файлы объединяются для создания типа. Невозможно распределить файлы по разным сборкам.
В зависимости от того, что вы хотите сделать, вы можете использовать методы расширения, чтобы выполнить то, что вам нужно.
Нет, это невозможно. Когда сборка скомпилирована, класс должен быть закончен.
В то время как другие ответы дают неприятное «Нет», что любой, кто заходил на эту страницу, не хотел видеть или слышать, я был поражен другой мыслью, которая еще не упоминалась здесь. Если бы частичные классы были разрешены для разных сборок, можно было бы получить доступ к закрытым членам существующих типов, которые не были им написаны, что позволило бы ему манипулировать ими способами, которые не были предназначены первоначальным автором, что поставило под угрозу функциональность всех наследующих классов слишком.
Мало того, эти классы в других сборках (и их дочерние элементы) необходимо будет перекомпилировать, чтобы это работало. Таким образом, логически невозможно разрешить разбиение класса на разные сборки.
Вы можете использовать методы расширения, когда хотите добавить метод в класс в другой DLL. Недостатком этого метода является то, что вы не можете добавлять статические методы.
Вопрос в том, почему вы хотите создать частичный класс в другой сборке? Вы можете определять абстрактные классы и интерфейсы для разных сборок, возможно, вам нужно разобраться с этим.
Вы, вероятно, просто хотите создать класс Wrapper в своей собственной библиотеке, вокруг класса в библиотеке 3-ей части. Затем добавьте любую функциональность в класс-оболочку.