русский

C# не работает контравариация в параметрах делегатов

Gestern, 20:41
Re: C# не работает контравариация в параметрах делегатов
 
alex445 патриот
in Antwort Отпускник Gestern, 19:21, Zuletzt geändert Gestern, 20:43 (alex445)
Ты точно знаешь, Вася-коллега не знает.

Там инициализируется объект и ему тут же назначаются свойства. Одно из свойств - делегат, принимающий этот же объект. Поэтому тип параметра делегата совпадает с типом самого инициализируемого объекта:


var obj = new Obj();

obj.Handler = (BaseObj o) => {...};


Вот только тип параметра делегата сделали зачемто базовым типом для объектов, так что мне в хендлере приходится его всё время приводить.


Я кажется понял, почему. В МСовских UI-фреймворках есть такой паттерн, когда для обработчика события сам объект, для которого событие обрабатывают, передают как object sender - т.е. с наиболее общим типом. А в обработчике ты уже сам его к чему нужно приводишь. Ну и здесь подобное сделали. Но мне надоело приводить, и хочу сразу готовый тип иметь.


А Вася просто должен познакомиться с фреймворком и посмотреть хотя бы пару примеров. В МСовских фреймворках Вася тоже же не с бухты барахты начинает код строчить, как ИИ какой-нибудь?

 

Sprung zu