我有兩個接口:C#泛型,接口和繼承
public interface IAmA
{
}
public interface IAmB<T> where T : IAmA
{
}
和兩個類實現這樣這些接口:
public class ClassA : IAmA
{
}
public class ClassB : IAmB<ClassA>
{
}
當試圖如圖所示,使用這些類:
public class Foo
{
public void Bar()
{
var list = new List<IAmB<IAmA>>();
list.Add(new ClassB());
}
}
我得到這個編譯器錯誤:
cannot convert from 'ClassB' to 'IAmB<IAmA>'
我知道我可以編譯開心使用make:
public class ClassB : IAmB<IAmA>
{
}
但我需要能夠成爲類型參數在ClassB
IAmB<>
的IAmA
的實現。
「通過IAmA的實現」是什麼意思? ClassB不*從*繼承任何東西,它仍然需要實現IAmB的每一個成員。爲什麼你*有*繼承IAmB而不是IAmB ?你試圖解決的實際問題是什麼? –
我更新了問題。 – Alex
更新沒有解釋任何事情 - 從一開始就很清楚你想使用具體的類 - 問題是*爲什麼*? –