C#: Добавление дополнительных методов к базовому классу так, чтобы они появились в производных классах

writeQuery. Синтаксический анализ является действием чтения его от строки и создания объекта (скажем, 'фактический') представление. Противоположное записало бы объект в строку.

9
задан Jason 1 August 2009 в 22:11
поделиться

4 ответа

Вы должны включить оператор using для пространства имен, в котором определен ваш класс расширений, иначе методы расширения не будут в области видимости.

Методы расширения отлично работают с производными типами (например, расширение методы, определенные в IEnumerable в System.Linq).

15
ответ дан 4 December 2019 в 08:01
поделиться

Метод расширения будет фактически применяться ко всем наследникам / разработчикам расширяемого типа (в данном случае Control). Вы можете попробовать проверить свои операторы using, чтобы убедиться, что пространство имен, в котором находится метод расширения, ссылается там, где вы пытаетесь его вызвать.

8
ответ дан 4 December 2019 в 08:01
поделиться

Я думаю, вам нужно сделать расширение универсальным:

public static void ExampleMethod<T>(this T ctrl)
    where T : Control 
{ /* ... */ }

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

-1
ответ дан 4 December 2019 в 08:01
поделиться

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

2
ответ дан 4 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: