.NETの特定の型(クラスまたはインタフェース)で実装されているインタフェースをどのように反映できますか?C#のタイプのインタフェースを反映する
反映されている型は(実装の意味と意味の意味の両方で)汎用であるため、アセンブリ名をハードコードする必要はありませんが、この名前を取得できることはわかりますが指定された型のTypeクラスから取得します。
.NETの特定の型(クラスまたはインタフェース)で実装されているインタフェースをどのように反映できますか?C#のタイプのインタフェースを反映する
反映されている型は(実装の意味と意味の意味の両方で)汎用であるため、アセンブリ名をハードコードする必要はありませんが、この名前を取得できることはわかりますが指定された型のTypeクラスから取得します。
Call Type.GetInterfaces()。
Type.GetInterfaces()はと宣言されたインターフェイスのみを取得します(これについては、MSDNに説明が必要です)。継承されたインターフェイスを取得するには、自分で作業を行う必要があります。似た何か:それはストレート離れる-DA-ボックスをコンパイルしていない場合
using System;
using System.Linq;
public static IEnumerable<Type> GetAllInterfacesForType(this Type type)
{
foreach (var interfaceType in type.GetInterfaces())
{
yield return interfaceType;
foreach (var t in interfaceType.GetAllInterfacesForType())
yield return t;
}
}
public static IEnumerable<Type> GetUniqueInterfacesForType(this Type type)
{ return type.GetAllInterfaces().Distinct(); }
私はカフオフとても残念これを書きました。
これは簡単すぎるでしょう;)ありがとう。 – johnc