次のクラスを考えると...
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());