Учитывая следующие классы ...
public abstract class FooBase<TBar> where TBar : BarBase{}
public abstract class BarBase{}
public class Bar1 : BarBase{}
public class Foo1 : FooBase<Bar1> {}
... и следующий метод ...
public TBar DoSomething<TFoo, TBar>(TFoo theFoo)
where TFoo : FooBase<TBar>
where TBar : BarBase
{
return default(TBar);
}
Почему следующая строка кода не может подразумевать тип возвращаемого значения?
Bar1 myBar = DoSomething(new Foo1());
Вместо этого я должен указать такие общие типы ...
Bar1 myBar = DoSomething<Foo1, Bar1>(new Foo1());