Я ищу, чтобы создать классы расширения, которые расширяют Entity Framework Entities в другой сборке для объектов EF. Я также хочу кодировать некоторые дополнительные/общие методы в классе методов расширения (используя T4), а затем иметь возможность создавать класс методов частичных расширений с дополнительными настраиваемыми методами. Это возможно.C#: Возможно ли иметь частичные классы расширения
ответ
Они вам не нужны. Просто напишите еще один класс расширения.
namespace Namespace1
{
public static class MyEntityBlibblingExtensions
{
public void Blibble(this MyEntity self)
{
// ...
}
}
}
Тогда, в другом месте ...
namespace Namespace2
{
public static class MyEntityFurtlingExtensions
{
public void Furtle(this MyEntity self)
{
// ...
}
}
}
Все импортирования Namespace1
будет видеть метод расширения Blibble()
пока ничего импортирования Namespace2
будет видеть Furtle()
и импорт и будет видеть оба. Они могут быть в разных сборках или в любом месте, где импортируется пространство имен MyEntity
. Таким образом, частичные расширения не являются действительно действительным понятием. Фактически, сама идея размещения методов расширения внутри классов - это немного хак, поскольку это - позор, который они не могли бы раскрыть правила C#, достаточные, чтобы позволить методам расширения жить вне классов.
Да, я пробовал, и это сработало.
Нет такой вещи, как класс расширения, существуют только методы расширения, которые должны находиться внутри класса «статические».
У вас могут быть статические частичные классы.
ОБНОВЛЕНИЕ: Извините, я прочитал ваш заголовок, но не текст вашего вопроса. Ответ по-прежнему да, но почему бы просто не создать новые классы? Я не вижу, как в этом случае помогает частичный класс.
Существует такая вещь, как класс расширения. Это статический класс с атрибутом 'Extension'. Он добавляется компилятором, если он содержит какой-либо метод расширения (который тоже будет иметь атрибут 'Extension'), но если вы играете с отражением и/или IL, вам нужно пометить статический класс классом расширения самостоятельно. – hvd
А, ладно, вот ты, мы кое-чему научились. – cbp
Основная проблема, которую я вижу здесь, - это фраза «в другой сборке». Если бы это было не так, вы могли бы просто добавить свои методы и т. Д. В дополнительный partial class
с обычными методами , и все будет хорошо.
У вас есть может имеют статические частичные классы, однако вы не можете использовать частичные классы для добавления к типу в другой сборке. Методы расширения работают отлично от частичного класса, хотя обратите внимание, что частичные классы - это всего лишь механизм разделения кода между разными файлами. Вы можете так же легко иметь несколько статических классов для методов расширения.
- 1. Возможно ли иметь «унаследованные частичные структуры» в C#?
- 2. Частичные классы в C#
- 3. C#: Частичные классы
- 4. Есть ли есть частичные классы?
- 5. Возможно ли иметь номер расширения класса?
- 6. Возможно ли создание операторов расширения в C#?
- 7. Частичные классы в отдельных dlls
- 8. Скала. Частичные классы
- 9. Частичные классы и сотни членов
- 10. Частичные классы WinForm
- 11. Сериализуемые частичные классы
- 12. Частичные классы и интерфейсы
- 13. Интерфейс и частичные классы
- 14. Возможно ли иметь несколько строк расширения/свернуть в viewPanel?
- 15. Есть ли способ сделать частичные классы в Java (например, C#)?
- 16. C# - использовать частичные классы или отдельные?
- 17. ASP.NET Дополнительные частичные классы
- 18. Абстрактные классы или частичные?
- 19. Возможно ли высечь частичные данные весеннего кеша?
- 20. ASP 2.0 и частичные классы
- 21. C++ Возможно ли иметь общий указатель функции?
- 22. Возможно ли иметь трансформаторный Iterator в C++?
- 23. C# - Возможно ли иметь нулевые параметры?
- 24. Возможно ли иметь рекурсивный вектор в C++?
- 25. Возможно ли иметь перечисление enums в C++?
- 26. Возможно ли иметь глобальные методы в C#
- 27. Неплохо ли иметь классы-оболочки?
- 28. Doxygen: Частичные классы не поддерживаются?
- 29. Объединить частичные классы в resharper
- 30. Частичные классы по отдельным проектам
Что вы пробовали? Я не совсем понимаю, что вы пытаетесь сделать, но несколько классов расширений могут расширить один и тот же оригинальный класс, если это то, о чем вы спрашиваете? –