私はジェネリックスの1つの側面の周りに私の頭を完全にラップしていません。ジェネリッククラスのすべてのインスタンスを参照するには?
のは、私はジェネリッククラスを持っているとしましょう:
public abstract SomeClass<T> where T : SomeInterface
{
public bool DoSomethingsWithT(T theItem)
{
//doStuff!!!
}
public virtual bool IsActive
{
get { return true; }
}
}
だからbasicly私がアクティブになるこのクラスを継承したバージョンを想定したが、私はそれらのいくつかは、独自に定義することができます。今後、私はタイプSomeClass<T>
のものであろうが、TはSomeInterface
public bool SomeMethod(object item)
{
var something = item as SomeClass;
return something.IsActive;
}
を実装する任意のクラスかもしれない。しかし、もちろん、これはのようにそこに動作しない私が知っているメソッドにオブジェクトを取得しています上の
SomeClass
という名前のクラスはありません。私はSomeClass<SomeInterface>
もできません。他のクラスがこれを継承しても、私はこれをキャストできません。
これはどのようにして正常に行われますか? SomeClass
という名前のクラスを作成すると、SomeClass<SomeInterface>
が継承し、そのクラスではIsActive
プロパティを定義します。
私はこの同じ正確な問題を見ています。SomeClass<SomeInterface>
を継承するアイテムのコレクションを作成するつもりでした。
あなたとダン・タオが言及したように私の前提は正しかった。だから、基本的に私は、インターフェイスに 'T'とは独立した全てのクラスメンバーと、ジェネリックバージョン内の' T'に依存するすべてのクラスメンバーを持たせることができますか? –