Информация об изменениях

Сообщение Re[2]: Переопределение невиртуального метода от 20.04.2017 9:17

Изменено 20.04.2017 9:18 Pek2014

Re[2]: Переопределение невиртуального метода
Здравствуйте, Sinatr, Вы писали:

S>Здравствуйте, Pek2014, Вы писали:


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


S>Вы уже предложили extension method... Отговорки в стиле "надо править слишком большое число мест" звучат не очень убедительно, ведь именно так подобная задача и решается,


Задача в том, чтобы программист, получивший ссылку на словарь действовал "как обычно", "как привычно", ничего не подозревая, но из-за фокуса сделанного в момент создания словаря (где-то далеко по коду), результат был бы "особенный".

S>...переопределить невиртуальный метод — звучит как XY проблема.


И тем не менее это сделать удалось с помощью повторной реализации интерфейса.
А доступ к старой версии метода (тому, что был перед переопределением),удалось блокировать запретом прямого создания экземпляров класса и предоставлением конкретной фабрики.
Re[2]: Переопределение невиртуального метода
Здравствуйте, Sinatr, Вы писали:

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


S>Вы уже предложили extension method... Отговорки в стиле "надо править слишком большое число мест" звучат не очень убедительно, ведь именно так подобная задача и решается,


Задача в том, чтобы программист, получивший ссылку на словарь действовал "как обычно", "как привычно", ничего не подозревая, но из-за фокуса сделанного в момент создания словаря (где-то далеко по коду), результат был бы "особенный".

S>...переопределить невиртуальный метод — звучит как XY проблема.


И тем не менее это сделать удалось с помощью повторной реализации интерфейса.
А доступ к старой версии метода (тому, что был перед переопределением),удалось блокировать запретом прямого создания экземпляров класса и предоставлением конкретной фабрики.