型がインターフェースから継承されているかどうかを確認する方法 c# 質問する

型がインターフェースから継承されているかどうかを確認する方法 c# 質問する

私は次のものを持っています:

Assembly asm = Assembly.GetAssembly(this.GetType());

foreach (Type type in asm.GetTypes())
{
    MyAttribute attr = Attribute.GetCustomAttribute(type, typeof(MyAttribute))    as MyAttribute;
     if(attr != null && [type is inherited from Iinterface])
     {
        ...
     }

}

その型が MyInterface から継承されているかどうかを確認するにはどうすればよいですか? このキーワードはこのように機能しますか?

ありがとう。

ベストアンサー1

いいえ、is種類を確認するためだけに機能します物体、与えられたものではありませんType。あなたが望むType.IsAssignableFrom:

if (attr != null && typeof(IInterface).IsAssignableFrom(type))

ここでの順序に注目してください。私はほとんどいつもtypeof(...)として使用する目標基本的に、true を返すには、ターゲットが「親」型で、引数が「子」型である必要があります。

おすすめ記事