共変でも反変でもよい型 (今のところセマンティクスは忘れています) を使用できますか?
例えば:
public interface Foo<in out T>
{
void DoFooWith(T arg);
}
C# 4.0 の分散の本質については、Eric Lippert のブログを参照してください。
とにかく試してみましたが、それが許可されていないだけでなく、要点全体が欠けていることがわかりました。読み取り専用、書き込み専用、バリアンスの間のリンクを理解する必要があります。
もっと読むべきことがあると思います。
しかし、それまでの間、ひらめきを誘発する短い答えは大歓迎です。