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


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

6 134

6 ответов:

с MSDN-разделяемые классы и методы:

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

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

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

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

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

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

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

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