导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Type.GetInterfaceMap 方法

2013/12/13

返回指定接口类型的接口映射。

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 方法演示泛型 Dictionary<TKey, TValue> 类的方法,这些方法可实现泛型 IDictionary<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

Windows Phone

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft