Использование операторов is
или as
является правильным способом, если вы знаете тип интерфейса во время компиляции и имеете экземпляр типа, который вы тестируете. Что-то, о чем никто еще не упоминал, это Type.IsAssignableFrom
:
if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}
Я думаю, что это гораздо удобнее, чем просматривать массив, возвращаемый GetInterfaces
, и имеет преимущество работы и для классов.