EDIT: Может быть, это яснее, к формулировке пункта вопроса:Разница в типе возвращаемого значения
В каком-то общем интерфейсе IInterface<T>
, я хочу, чтобы вернуть объект общего типа, где один аргументов типа должна быть реализация IInterface<T>
.
public class OtherType<T> {}
public interface IInterface<T>
{
OtherType<IInterface<T>> Operation();
}
public class Impl : IInterface<int>
{
public OtherType<IInterface<int>> Operation()
{
return new OtherType<Impl>();
}
}
С Impl
реализует IInterface<int>
, кажется разумным мне, что я мог бы использовать его таким образом. Тем не менее, мне кажется, я не могу, я получаю ошибку компилятора
Невозможно преобразовать выражение типа
OtherType<Impl>
к, чтобы возвращаемый типOtherType<IInterface<int>>
Не могли бы вы преобразовать свои ОЧЕНЬ длинные и запутанные имена классов в нечто вроде A, B, C и так далее? – Sebastian
@CarlPett: Вы следили за превосходной блогой блога Эрика Липперта в Монадах? http://ericlippert.com/2013/02/21/monads-part-one/ Кажется, вы боретесь заново изобретать эту конструкцию и можете использовать некоторое представление об общем механизме. –
@PieterGeerkens: У меня нет, спасибо за подсказку! Кажется, действительно интересно. У меня было только время, чтобы прочитать первые четыре части, но пока я не могу понять, как применить его здесь? – carlpett