たとえば、IListまたはIDictionaryを実装するための.NETオプションが何であるかを確認したい場合です。たとえば、MSDNドキュメントでそれを見つける方法はありますか?
5 に答える
Reflectorを使えば可能だと思います
これをプログラムで行うこともできます。
型が配置されているアセンブリがわかっている場合 (私はmscorlib
それがどこにstring
あるかを使用しています)、次のメソッドを使用してリストを作成できます。
.Net 3.0
List<Type> implementors =
Assembly.GetAssembly(typeof(string))
.GetTypes()
.Where(type => type.GetInterfaces().Contains(typeof(IList)))
.ToList();
.Net 2.0
List<Type> implementors = new List<Type>();
foreach (Type type in Assembly.GetAssembly(typeof(string)).GetTypes())
{
foreach (Type interfaceType in type.GetInterfaces())
{
if (interfaceType == typeof(IList))
{
implementors.Add(type);
}
}
}
リストには、インターフェースを実装するのimplementors
リストが保持されます。、、 など、任意のインターフェイスに変更できます。Types
IList
IList
IDictionary
ICollection
編集:
これを現在のすべてのアセンブリに拡張したい場合は、次のAppDomain
ようにします。
List<Type> implementors =
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes()
.Where(type => type.GetInterfaces().Contains(typeof(IList)))
).ToList();
それは本当にすべて、データで何をしているかに依存します。個人的な満足のためにそれらを表示したいだけの場合は、Reflectorが最も簡単なオプションになります。特に、アプリケーション ドメインにロードされたアセンブリを超えて見たい場合 (最初にアプリケーションがあると仮定します)。その場合、GACからすべてのアセンブリをロードできると思います...しかし、これは基本的に、必要なものを個別に選択して選択できることを除いて、 Reflectorが行うことです。
MSDN でそれを見つけるには、通常、Google にアクセスして「MSDN IList」などと入力し、「IList を実装するクラス」セクションがあるIList インターフェイスにアクセスします。これは、どのインターフェイス クラスにも当てはまります。
DictionaryBaseなどの基本クラスが見つかった場合は、継承階層を示すツリーに移動するDerived Classesというリンクがあります。
このメソッドを使用して、特定のタイプが実装するインターフェースをルックアップできます。
http://msdn.microsoft.com/en-us/library/system.type.getinterfaces.aspx
トリックを行う必要があります
具体的なユースケースはありますか? 私の頭の上からあなたが使うことができます:
System.Collections.ArrayList (or derived)
System.Collections.ObjectModel.Collection<T> derived
System.Collections.CollectionBase derived
System.Collections.DictionaryBase derived
System.Collections.Hashtable (or derived)