これで、C#のインターフェイスとデリゲートにジェネリック共変性と反変性ができたので、が与えられたらType
、そのジェネリック引数の共変性/反変性を理解できます。私は独自の実装を書き始めました。これは、特定の型のすべてのメソッドを調べて、戻り値の型や引数が汎用引数の型と一致するかどうかを確認します。問題は、私がこれを持っていても:
public interface IFoo<T>
{
void DoSomething(T item);
}
私のロジックを使用すると、それは反変であるはずのように見えますが、実際には指定しなかったため、次のようになります。
public interface IFoo<in T>
{
void DoSomething(T item);
}
(inパラメーター)実際には反変ではありません。これが私の質問につながります:ジェネリックパラメーターの分散を決定する方法はありますか?