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 回答