情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Type.GetInterfaceMap メソッド

2013/12/12

指定したインターフェイスの型のインターフェイス マッピングを返します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public virtual InterfaceMapping GetInterfaceMap(
	Type interfaceType
)

パラメーター

interfaceType
型: System.Type
割り当ての取得対象であるインターフェイスの Type

戻り値

型: System.Reflection.InterfaceMapping
interfaceType に対するインターフェイスの割り当てを表す InterfaceMapping オブジェクト。

例外条件
ArgumentException

interfaceType パラメーターは、インターフェイスを参照しません。

または

interfaceType はジェネリック インターフェイスで、現在の型は配列型です。

ArgumentNullException

interfaceTypenull です。

InvalidOperationException

現在の Type は、ジェネリック型のパラメーターを表します。つまり、IsGenericParametertrue です。

NotSupportedException

呼び出されたメソッドは、基本クラスではサポートされません。派生クラスには実装を指定しなければなりません。

インターフェイス マップは、そのインターフェイスを実装するクラスの実際のメソッドにインターフェイスを割り当てる方法を示します。

現在の Type が構築ジェネリック型を表している場合、型パラメーターは、このメソッドによって返される InterfaceMapping の要素内の適切な型引数で置き換えられます。

次の例では、GetInterfaceMap メソッドを使用して、ジェネリック IDictionary<TKey, TValue> インターフェイスのメソッドを実装するジェネリック Dictionary<TKey, TValue> クラスのメソッドを示します。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;
using System.Collections.Generic;

class Example
{

    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {

        Dictionary<int, string> obj = new Dictionary<int, string>();

        // Get the mapping between the interface methods of the 
        // generic IDictionary interface and the Dictionary methods
        // that implement them.
        if (obj.GetType().GetInterface("IDictionary`2", false) != null)
        {
            Type idictType = typeof(IDictionary<int, string>);
            InterfaceMapping map = obj.GetType().GetInterfaceMap(idictType);

            MethodInfo[] interfaceMethods = map.InterfaceMethods;
            MethodInfo[] implementationMethods = map.TargetMethods;

            for(int i=0; i<interfaceMethods.Length; i++)
            {
                outputBlock.Text += interfaceMethods[i].ToString() + 
                    " is implemented by:\n       " + 
                    implementationMethods[i].ToString() + "\n";
            }
        }
    }
}

/* This example produces the following output:

System.String get_Item(Int32) is implemented by:
       System.String get_Item(Int32)
System.String set_Item(Int32, System.String) is implemented by:
       Void set_Item(Int32, System.String)
System.Collections.Generic.ICollection`1[System.Int32] get_Keys() is implemented by:
       System.Collections.Generic.ICollection`1[System.Int32] System.Collections.Generic.IDictionary<TKey,TValue>.get_Keys()
System.Collections.Generic.ICollection`1[System.String] get_Values() is implemented by:
       System.Collections.Generic.ICollection`1[System.String] System.Collections.Generic.IDictionary<TKey,TValue>.get_Values()
Boolean ContainsKey(Int32) is implemented by:
       Boolean ContainsKey(Int32)
Void Add(Int32, System.String) is implemented by:
       Void Add(Int32, System.String)
Boolean Remove(Int32) is implemented by:
       Boolean Remove(Int32)
Boolean TryGetValue(Int32, System.String ByRef) is implemented by:
       Boolean TryGetValue(Int32, System.String ByRef)
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: