Есть ли какой-либо путь в C# для переопределения метода класса с дополнительным методом?

Нет. Лучшее, что вы можете сделать, это использовать border-bottom с другим цветом, но это не на самом деле , подчеркивая.

96
задан Andreas Grech 23 May 2009 в 10:50
поделиться

3 ответа

Нет; метод расширения никогда не имеет приоритета над методом экземпляра с подходящей сигнатурой и никогда не участвует в полиморфизме ( GetHashCode - это виртуальный метод).

90
ответ дан 24 November 2019 в 05:41
поделиться

Насколько я знаю, ответ отрицательный, потому что метод расширения не является экземпляром. Для меня это больше похоже на средство intellisense, которое позволяет вам вызывать статический метод с использованием экземпляра класса . Я думаю, что решением вашей проблемы может быть перехватчик, который перехватывает выполнение определенного метода (например, GetHashCode ()) и делает что-то еще. Чтобы использовать такой перехватчик (например, один из Castle Project), все объекты должны быть созданы с помощью фабрика объектов (или контейнер IoC в Castle), так что их интерфейсы могут быть перехвачены через динамический прокси, созданный во время выполнения. (Caslte также позволяет вам перехватывать виртуальные члены классов)

2
ответ дан 24 November 2019 в 05:41
поделиться

Если метод имеет другую сигнатуру, то это можно сделать - так в вашем случае: нет

Но в противном случае вам нужно использовать наследование, чтобы делать то, что вы ищете.

7
ответ дан 24 November 2019 в 05:41
поделиться
Другие вопросы по тегам:

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