頭を包み込もうとしているという問題があります。私はひどく間違っているかもしれませんが、これが私がやろうとしていることです。
私は2つのインターフェースを持っています。2番目のインターフェースには、最初のインターフェースの実装である必要があるプロパティがあります。このようなもの:
public interface ITypeA{
int Id {get;set;}
}
public interface IEntityA<T>: where T:ITypeA
{
string Name{get;set;}
T type{get;set;}
}
実装は次のようになります。
public class TypeA: ITypeA{
int Id {get;set;}
}
public class EntityA: IEntityA<TypeA>{
public string Name{get;set;}
public TypeA type{get;set;
}
私はすでに何か間違ったことをしているかもしれません(?)。
今、私はリポジトリパターンを実装しています、そしてそのためのインターフェースは次のようになります:
public interface IRepo{
IEnumerable<IEntityA<ITypeA>> GetObjects();
}
および実装:
public class DefaultRepo:Repo{
//Cunstructors
public IEnumerable<IEntitytA<ITypeA>> GetObjects(){
var objects = SomeMethodThatReturnsTheOjects();//Get objects as EntityA[];
return object.ToList();
}
}
これは機能しません。
私もキャストしようとしましたが、不審なキャストであるという警告が表示されます。
objects.Cast<IEntityA<ITypeA>[]>().ToList();
私はどこで間違っている/考えていますか?
多くのappriciatedを助けてください:)
編集: たぶん、リポジトリインターフェイス宣言は次のようになります
public interface IRepo<TEntityA> where TEntityA:IEntityA{
IEnumerable<TEntityA> GetObjects();
}
および実装:
public class DefaultRepo:Repo<EntityA>{
///Methods
}
考え?:)