C#のGenericsについて私が理解していることを確認したいだけです。これは、タイプセーフな派生インスタンスを作成するためにジェネリックベースクラスが使用されているところで私が働いていた2つのコードベースにあります。私が話しているかの非常に単純な例、C#ジェネリックと多型:矛盾?
public class SomeClass<T>
{
public virtual void SomeMethod(){ }
}
public class DeriveFrom :SomeClass<string>
{
public override void SomeMethod()
{
base.SomeMethod();
}
}
私はその後、多型の方法で導出インスタンスを使用する場合の問題がアップします。
public class ClientCode
{
public void DoSomethingClienty()
{
Factory factory = new Factory();
//Doesn't compile because SomeClass needs a type parameter!
SomeClass someInstance = factory.Create();
someInstance.SomeMethod();
}
}
あなたが継承階層またはインタフェースにジェネリックを導入したら、あなたはもはや自分自身におそらく内部を除いて多型の方法で、クラスのファミリを使用することはできないようです。本当?
SomeClassはSomeClassではなく、DeriveFromの基本クラスであると思われます。これはあなたがそう信じていると思われるものです。 –
Thanatos