Test om objekt implementerer interface
if (object is IBlah)
eller
IBlah myTest = originalObject as IBlah
if (myTest != null)
Brug af is
eller as
operatører er den korrekte måde, hvis du kender grænsefladetypen på kompileringstidspunktet og har en forekomst af den type, du tester. Noget, som ingen andre synes at have nævnt, er Type.IsAssignableFrom
:
if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}
Jeg synes, det er meget pænere end at se gennem arrayet returneret af GetInterfaces
og har den fordel, at de også arbejder for klasser.
Hvis du vil bruge det typecastede objekt efter kontrollen:
Siden C# 7.0:
if (obj is IMyInterface myObj)
Dette er det samme som
IMyInterface myObj = obj as IMyInterface;
if (myObj != null)
Se .NET Docs:Mønstermatching med is
# Indtast mønster