我有两个接口:
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());
}
}
我收到了这个编译器错误信息:
无法将 'ClassB' 转换为 'IAmB<IAmA>'
我知道可以通过以下方式使编译器满意:
public class ClassB : IAmB<IAmA>
{
}
但我需要能够成为IAmB<>
的类型参数,在ClassB
中实现IAmA
。
ClassB
不是IAmB<IAmA>
。为什么你想这样处理它呢?如果你可以隐式地将object
作为string
参数传递给方法,那么这是否合理呢?因为这正是你在这里做的事情。 - LuaanIAmB
使用通用类型参数。 - Alex