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

Сообщение Вывод общего интерфейса - возможно ли? от 13.06.2018 19:51

Изменено 13.06.2018 20:07 LWhisper

Вывод общего интерфейса - возможно ли?
Возможно ли реализовать подобное в C#/F# сейчас или в ближайшем будущем без использования dynamic?
var service = new StupidService()
.Smart()
.Useful();

ISmartService s1 = service;
IUsefulService s2 = service;


В случае Extension-методов возникает проблема написания кода для всех возможных комбинаций интерфейсов.

Вариант с рантайм-генерацией типов подходит, но возникает вопрос — каким должно быть возвращаемое значение? Как описать T + IInterface?
.net c# f# вывод типов
Вывод общего интерфейса - возможно ли?
Возможно ли реализовать подобное в C#/F# сейчас или в ближайшем будущем без использования dynamic?
var service = new StupidService()
.Smart()
.Useful();

ISmartService s1 = service;
IUsefulService s2 = service;


В случае Extension-методов возникает проблема написания кода для всех возможных комбинаций интерфейсов.

Вариант с рантайм-генерацией типов подходит, но возникает вопрос — каким должно быть возвращаемое значение? Как описать T + IInterface?

Почему не подходит контейнер — отсутствие проверок на этапе компиляции. Да, Resolve<IService> будет бросать исключения, если зависимости не были проинициализированы, но узнаем мы об этом только в рантайме.
.net c# f# вывод типов