Возможно ли иметь две части (такое же пространство имен, одно имя класса) для частичного класса в отдельных DLL?Частичные классы в отдельных dlls
ответ
От MSDN -Partial Classes and Methods:
Все определения частичного типа предназначены для быть частями одного и того же типа должны быть определены в одной и той же сборки и же модуля (.exe или .dll файл). Частичные определения не могут охватывать несколько модулей.
Нет, это невозможно. Когда сборка компилируется, класс должен быть завершен.
Нет. Частичные классы - это чисто языковая функция. Когда сборка скомпилирована, файлы объединяются для создания типа. Невозможно распространять файлы на разные сборки.
В зависимости от того, что вы хотите сделать, вы, возможно, сможете использовать extension methods, чтобы выполнить то, что вам нужно.
Вопрос в том, почему вы хотите сделать частичный класс в другой сборке? Вы можете определить абстрактные классы и интерфейсы между сборками, возможно, вам нужно изучить это.
IMHO Есть допустимые случаи, например: Возможно, вы захотите добавить аннотации формы MVC к классу модели, определенному в другой сборке. Сама сборка не знает, в каком контексте она используется, поэтому класс в сборке не должен содержать никаких аннотаций. Они могут быть добавлены в частичном классе в контексте MVC, хотя (если это было возможно). – nyi
nyi, почему бы просто не наследовать этот класс и не объявить свои атрибуты сверху? Вы можете даже называть его одним и тем же именем, если хотите. – Gleno
Вы можете использовать методы расширения, если хотите добавить метод к классу в другой dll. Единственным недостатком этого метода является то, что вы не можете добавлять статические методы.
В то время как другие ответы дают неприятное «Нет», что любой человек, приземляющийся на этой странице, не хотел видеть или слышать, меня поразила другая мысль, о которой здесь еще не упоминалось. Если бы частичные классы разрешались по сборкам, можно было бы получить доступ к частным членам к существующим типам, которые не были написаны им, и позволить ему манипулировать ими способами, которые были непреднамерен оригинальным автором, тем самым подвергая опасности все наследующие классы.
Не только эти классы в других сборках (и их дочерних элементах) должны быть перекомпилированы, чтобы заставить их работать. Таким образом, логически невозможно разрешить разделение класса на разные сборки.
- 1. Частичные классы в C#
- 2. ASP.NET Дополнительные частичные классы
- 3. Абстрактные классы или частичные?
- 4. Сериализуемые частичные классы
- 5. Частичные классы и интерфейсы
- 6. Интерфейс и частичные классы
- 7. Скала. Частичные классы
- 8. C#: Частичные классы
- 9. Частичные классы WinForm
- 10. Объединить частичные классы в resharper
- 11. Где положить частичные классы (linq2sql)
- 12. ASP 2.0 и частичные классы
- 13. Дополнительные частичные классы для формы
- 14. Частичные классы по отдельным проектам
- 15. asp.net: частичные классы и наследование
- 16. Есть ли есть частичные классы?
- 17. Частичные классы и сотни членов
- 18. Doxygen: Частичные классы не поддерживаются?
- 19. Частичные классы/частичные методы против базовых/унаследованных классов
- 20. Как реализовать частичные классы в JavaScript?
- 21. LINQtoSQL создает частичные классы в Visual Studio
- 22. Разделить частичные классы на отдельные файлы
- 23. Частичные классы, потерянные через ссылку webservice
- 24. C#: Возможно ли иметь частичные классы расширения
- 25. Как нарисовать частичные классы на диаграмме UML?
- 26. Включая частичные, если только определенные классы страниц
- 27. Частичные классы EF и значения по умолчанию
- 28. Частичные классы и код доступа к данным
- 29. Частичные классы ASP.NET и присоединение к процессу
- 30. Объединить Частичные классы с обычными классами
как и другие говорили, что это невозможно, но есть способы дополнить классы новым поведением из разных источников, что именно вы хотите делать в разных DLL? – Ozan
В моем случае я хочу добавить несколько статических методов в класс, определенный в сторонней библиотеке. Методы расширения не будут работать, и не будут интерфейсов и наследования, потому что класс статичен. Узнав, что у вас могут быть частичные статические классы, я пришел сюда, чтобы узнать, работает ли он по сборкам, но, увы, похоже, что это тоже не сработает. – Ben