我试图掌握 .NET 泛型的概念并在我自己的代码中实际使用它们,但我一直遇到问题。
有人可以尝试向我解释为什么以下设置无法编译吗?
public class ClassA
{
ClassB b = new ClassB();
public void MethodA<T>(IRepo<T> repo) where T : ITypeEntity
{
b.MethodB(repo);
}
}
public class ClassB
{
IRepo<ITypeEntity> repo;
public void MethodB(IRepo<ITypeEntity> repo)
{
this.repo = repo;
}
}
我收到以下错误:
无法从 IRepo<'T> 转换为 IRepo<'ITypeEntity>
MethodA 使用 IRepo<'DetailType> 对象参数调用,其中 DetailType 继承自 ITypeEntity。
我一直认为这应该编译,因为我将 MethodA 中的 T 限制为 ITypeEntity 类型。
任何想法或反馈都会非常有帮助。
谢谢。
编辑: Nick R 有一个很好的建议,但不幸的是,在我的上下文中,我没有选择制作 ClassA Generic。B类可能是。