4

たとえば、IListまたはIDictionaryを実装するための.NETオプションが何であるかを確認したい場合です。たとえば、MSDNドキュメントでそれを見つける方法はありますか?

4

5 に答える 5

5

Reflectorを使えば可能だと思います

于 2009-07-15T21:39:07.760 に答える
3

これをプログラムで行うこともできます。

型が配置されているアセンブリがわかっている場合 (私は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リストが保持されます。、、 など、任意のインターフェイスに変更できます。TypesIListIListIDictionaryICollection

編集:

これを現在のすべてのアセンブリに拡張したい場合は、次のAppDomainようにします。

List<Type> implementors = 
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes()
                        .Where(type => type.GetInterfaces().Contains(typeof(IList)))
            ).ToList();

それは本当にすべて、データで何をしているかに依存します。個人的な満足のためにそれらを表示したいだけの場合は、Reflectorが最も簡単なオプションになります。特に、アプリケーション ドメインにロードされたアセンブリを超えて見たい場合 (最初にアプリケーションがあると仮定します)。その場合、GACからすべてのアセンブリをロードできると思います...しかし、これは基本的に、必要なものを個別に選択して選択できることを除いて、 Reflectorが行うことです。

于 2009-07-15T22:14:24.803 に答える
3

MSDN でそれを見つけるには、通常、Google にアクセスして「MSDN IList」などと入力し、「IList を実装するクラス」セクションがあるIList インターフェイスにアクセスします。これは、どのインターフェイス クラスにも当てはまります。

DictionaryBaseなどの基本クラスが見つかった場合は、継承階層を示すツリーに移動するDerived Classesというリンクがあります。

于 2009-07-15T21:39:20.707 に答える
1

このメソッドを使用して、特定のタイプが実装するインターフェースをルックアップできます。

http://msdn.microsoft.com/en-us/library/system.type.getinterfaces.aspx

トリックを行う必要があります

于 2009-07-15T21:38:22.113 に答える
0

具体的なユースケースはありますか? 私の頭の上からあなたが使うことができます:

System.Collections.ArrayList (or derived)
System.Collections.ObjectModel.Collection<T> derived
System.Collections.CollectionBase derived
System.Collections.DictionaryBase derived
System.Collections.Hashtable (or derived)
于 2009-07-15T21:39:29.537 に答える