C# как проверить объект на реализацию интерфейса?


#1

Хочу организовать проверку на реализацию интерфейса объектом перед его попыткой приведения. Как это можно просто и быстро сделать?


#2

Для этого есть два отдельных оператора:

  • оператор is проверяет возможно ли приведение определённого объекта к классу/интерфейсу

пример:

class MyClass : IInterface
{/*....*/} 

MyClass instance = new MyClass();
IInterface inter;
if (instance is IInterface)     // is вернёт true если приведение возможно и false если приведение невозможно
{
     inter = (IInterface)instance ;
}
  • оператор as вернёт объект к указанному типу (если приведение возможно), иначе вернёт null

пример:

inter = instance as IInterface;

as это сокращённая форма конструкции приведённой ниже:

if (instance is IInterface)
{
     inter = (IInterface)instance ;
}
else
{
     inter = null;
}