信息
您所需的主题如下所示。但此主题未包含在此库中。

Type.GetInterface 方法

2013/12/13

当在派生类中重写时,搜索指定的接口,指定是否要对接口名称执行不区分大小写的搜索。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public abstract Type GetInterface(
	string name,
	bool ignoreCase
)

参数

name
类型: System.String
包含要获取的接口名称的 String。对于泛型接口,这是重整名称。
ignoreCase
类型: System.Boolean
true 表示对于 name(用来指定简单接口名称)中指定命名空间大小写必须正确的部分,忽略其大小写。
- 或 -
false 表示对 name 的所有部分执行区分大小写的搜索。

返回值

类型: System.Type
表示具有指定名称且由当前的 Type 实现或继承的接口的 Type 对象(如果找到的话);否则为 null

异常条件
ArgumentNullException

namenull

AmbiguousMatchException

当前 Type 表示使用不同类型参数实现同一泛型接口的类型。

ignoreCase 参数仅适用于简单的接口名称,而不适用于命名空间。name 中的某一部分,该部分指定命名空间的大小写必须正确,否则将找不到该接口。例如,字符串“System.icomparable”能够找到 IComparable 接口,但是字符串“system.icomparable”找不到该接口。

如果当前 Type 表示某种已构造的泛型类型,则此方法将返回 Type,并且其类型参数由相应的类型参数替换。

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索接口约束以及从类或接口约束继承的所有接口。

说明注意:

对于泛型接口,name 参数为改变后的名称,以抑音符 (`) 和类型参数的数目结尾。泛型接口定义和构造泛型接口都是如此。例如,为了查找 IExample<T>(在 Visual Basic 中为 IExample(Of T))或 IExample<string>(在 Visual Basic 中为 IExample(Of String)),可搜索 "IExample`1"

下面的示例使用 GetInterface(String, Boolean) 方法重载对泛型 IDictionary<TKey, TValue> 接口的泛型 Dictionary<TKey, TValue> 类执行区分大小写的搜索。

该示例还演示 GetInterfaceMap 方法。

说明注意:

要运行此示例,请参见生成具有静态 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

显示: