Alw*_*wyn 5 c# reflection .net-4.0 covariance contravariance
如何通过继承层次结构以及协方差和逆变来检测类型x是否可以从类型中分配y?
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
Run Code Online (Sandbox Code Playgroud)