【c#】type に 特定のインターフェイスを含んでいるかチェックするには?
2020年10月13日
System.Type.IsAssignableFrom(Type) メソッド
例
interface IHoge {}
class CHuga : IHoge {}
var result = typeof( IHoge).IsAssignableFrom( typeof( CHuga)); // true
System.Type.IsSubclassOf(Type) ではインターフェースを含んでいるか調べられない。
var result = typeof( CHuga).IsSubclassOf( typeof( IHoge)); // false
ハマったことろ
System.Type.IsAssignableFrom(Type) と Type.IsSubclassOf(Type) では用途が逆なので 反対だと false しか返さない。小一時間悩んだ
var result = typeof( CHuga).IsAssignableFrom( typeof( IHoge)); // false
マニュアルを良く読めばわかるけど、似たような目的なのに逆なので注意です!