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