Como alguien ya mencionado: Benjamin Abr 10 '13 a las 22:21"
Seguro que era fácil no prestar atención y obtener los argumentos para IsAssignableFrom hacia atrás.Voy a ir con GetInterfaces ahora: p -
Bueno, otro revés es sólo para crear un método de extensión corta que cumple, en cierta medida, la forma "más habitual" de pensar (y de acuerdo este es un muy poca elección personal para que sea un poco "más natural", basada en las preferencias de uno):
public static class TypeHelpers
{
public static Boolean IsAssignableTo(Type type, Type assignableType)
{
return assignableType.IsAssignableFrom(type);
}
}
public static class TypeExtensions
{
public static Boolean IsAssignableTo(this Type type, Type assignableType)
{
return TypeHelpers.IsAssignableTo(type, assignableType);
}
}
Y por qué no va un poco más genérico (bueno, no estoy seguro si es realmente tan interesante, así que supongo que estoy solo pasando otra pizca de azúcar 'sintaxis'):
public static class TypeHelpers
{
public static Boolean IsAssignableTo(Type type, Type assignableType)
{
return assignableType.IsAssignableFrom(type);
}
public static Boolean IsAssignableTo<TAssignable>(Type type)
{
return TypeHelpers.IsAssignableTo(type, typeof(TAssignable));
}
}
public static class TypeExtensions
{
public static Boolean IsAssignableTo(this Type type, Type assignableType)
{
return TypeHelpers.IsAssignableTo(type, assignableType);
}
public static Boolean IsAssignableTo<TAssignable>(this Type type)
{
return TypeHelpers.IsAssignableTo<TAssignable>(type);
}
}
yo creo que puede ser mucho más natural de esa manera, pero una vez más sólo una cuestión de opiniones muy personales:
var isTrue = michelleType.IsAssignableTo<IMaBelle>();
Recuerde que typeof (IMyInterface) .IsAssignableFrom (typeof (IMyInterface)) también es verdadero, lo que puede tener un resultado inesperado en su código. –
Seguro que fue fácil no prestar atención y obtener los argumentos para 'IsAssignableFrom' al revés. Iré con 'GetInterfaces' ahora: p – Benjamin
La variante' IsAssignableFrom (t1) 'es aproximadamente 3 veces más rápida que la contraparte' GetInterfaces(). Contains (t2) 'en mi código. –