Quiero comprobar si un tipo admite IComparable antes de ordenarlo, pero he encontrado que comprobar si un tipo admite la interfaz IComparable con "es" no siempre me da la respuesta correcta. Por ejemplo, typeof(int) is IComparable
devuelve falso, aunque int admite la interfaz IComparable.¿Cómo puedo usar "es" para probar si un tipo admite IComparable?
Noté que typeof(int).GetInterfaces()
enumera IComparable y typeof(int).GetInterface("IComparable")
devuelve el tipo IComparable, entonces ¿por qué "no funciona" como esperaba?
Las especificaciones 'is' dicen que devuelve verdadero cuando la conversión no lanza una excepción. intente convertir un 'int' en' IComparable' y vea si hay algún problema. – Dani