【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

マニュアルを良く読めばわかるけど、似たような目的なのに逆なので注意です!

コメントを残す