.NET Genericsの概念を理解し、実際に自分のコードで使用しようとしていますが、問題が発生し続けています。
次のセットアップがコンパイルされない理由を誰かが私に説明しようとすることができますか?
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は、DetailTypeがITypeEntityから継承するIRepo<'DetailType>オブジェクトパラメータで呼び出されます。
MethodA内のTをITypeEntityタイプに制限しているので、これはコンパイルする必要があると私は考え続けています。
どんな考えやフィードバックも非常に役に立ちます。
ありがとう。
編集:ニックRは素晴らしい提案をしていますが、残念ながら私の文脈では、ClassAをGenericにするオプションはありません。ClassBはそうかもしれません。