5

継承階層だけでなく、共変性と反変性によってもx型が型から割り当て可能かどうかをどのように検出できますか?y

4

1 に答える 1

8

IsAssignableFrom共変性と反変性をチェックします。他に何も必要ありません。

// Covariance
typeof(IEnumerable<object>).IsAssignableFrom(typeof(IEnumerable<string>)).Dump(); // true
typeof(IEnumerable<string>).IsAssignableFrom(typeof(IEnumerable<object>)).Dump(); // false

// Contravariance
typeof(Action<string>).IsAssignableFrom(typeof(Action<object>)).Dump(); // true
typeof(Action<object>).IsAssignableFrom(typeof(Action<string>)).Dump(); // false
于 2012-07-13T00:50:35.027 に答える