public static bool ImplementsInterface(this Type type, Type ifaceType)
{
Type[] intf = type.GetInterfaces();
for(int i = 0; i < intf.Length; i++)
{
if(intf[i] == ifaceType)
{
return true;
}
}
return false;
}
Ich denke, das ist die richtige Version, aus drei Gründen:
- Es verwendet GetInterfaces und nicht IsAssignableFrom, was schneller ist, da IsAssignableFrom letztendlich nach mehreren Überprüfungen GetInterfaces aufruft.
- Es iteriert über das lokale Array, daher wird es keine Grenzüberprüfungen geben.
- Es verwendet den == Operator, der für Type definiert ist, daher ist er wahrscheinlich sicherer als die Equals Methode (die der Contains Aufruf letztendlich verwenden wird).