重複の可能性:
C#-ジェネリックヘルプ
以下のように、このインターフェースIBarから始めましょう。
public interface IBar<T> : IQueryable<T>, IEnumerable<T> where T : class
{
}
私は次の3つのクラスBar1、Bar2、Bar3を持っています。
public class Bar1
{
}
public class Bar2
{
}
public class Bar3
{
}
次に、以下に示すように、上記の3つのクラスのそれぞれに対応する汎用IBarを含むIFooという別のインターフェイスがあります。
public interface IFoo
{
IBar<Bar1> Bar1 { get; set; }
IBar<Bar2> Bar2 { get; set; }
IBar<Bar3> Bar3 { get; set; }
}
最後に、Foo1Sample、Foo2Sample、Foo3Sampleの3つのクラスがあります。この各クラスには、IFaceインターフェイスのインスタンスが含まれ、次に示すようにIQueryableを返すDataプロパティもあります。
public class Foo1Sample
{
IFoo foo;
public IQueryable<Bar1> Data
{
get { return foo.Bar1; }
}
}
public class Foo2Sample
{
IFoo foo;
public IQueryable<Bar2> Data
{
get { return foo.Bar2; }
}
}
public class Foo3Sample
{
IFoo foo;
public IQueryable<Bar3> Data
{
get { return foo.Bar3; }
}
}
DataプロパティがそのIFooインターフェイスから適切な型を返すことができるように、Foo1Sample、Foo2Sample、およびFoo3Sampleに使用できる基本クラスを作成できるかどうか疑問に思っていました。