Переопределение невиртуального метода
От: Pek2014 Россия  
Дата: 19.04.17 13:32
Оценка:
Хочется странного?...

Задачка. В обычном Dictionary<> не устраивает реализация метода Add. Надо кое-что в него добавить (некую диагностику). В остальном стандартный Dictionary<> вполне устраивает.

Унаследоваться и переопределить метод Add не выходит. Метод не виртуальный. Видится два выхода:

Выход 1. Написать свой новый внешний статический метод (например AddValue) и заменить все вызовы старого Add на новый AddValue (можно сделать как extention метод для красоты).

Выход 2. Написать свой Dictionary агрегировав стандартный и тупо перенаправив ему все вызовы, подкрутив немного метод Add.


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

Выход 2 Хорош тем, что требует исправления клиентского кода только в месте создания словаря, а код в местах его использования не меняется. Но плох тем, что надо написать кучу тупого кода, повторяя вполне устраивающую функциональность стандартного словаря.

Нет ли ещё какого способа "переопределить" невиртуальный метод?
Отредактировано 19.04.2017 13:40 Pek2014 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.