共分散/反分散を使用するには、インターフェイスまたはデリゲートでジェネリックを使用する必要があります。言語設計の問題で何かをしなければならないと思います。
たとえば、これは問題がないことを示していますが、コンパイルエラーが発生します。(基本的に)オーバーライド可能な修飾されたメソッドはありません。
class Human
{
public virtual void f(String i) { } // I want Contravariance
public virtual Object f2() { } // I want Covaraicne
}
class Mike : Human
{
public override void f(Object o) { } // Fail.
public override String f2() { } // Fail
}
それもできればかっこいいと思いますが、残念ながら、コンパイラなどで初期化するための隠れた問題がいくつかあります。
私はこれに対する良い答えを私に与えることができる記事をグーグルで検索しているので、リンクも同様に高く評価されます.
前もって感謝します。