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

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

6 ответов


с MSDN-частичные классы и методы:

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


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

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


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


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


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


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

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