添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
public:
 virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean

下面的代码示例使用 IsGenericMethodDefinition 属性来显示一条消息,指示是否 MethodInfo 表示泛型方法定义。

此示例摘自为方法提供的一个更大的示例 MakeGenericMethod

Console.WriteLine(vbTab _
    & "Is this a generic method definition? {0}", _
    mi.IsGenericMethodDefinition)
Console.WriteLine("\tIs this a generic method definition? {0}", 
    mi.IsGenericMethodDefinition);
Console::WriteLine("\tIs this a generic method definition? {0}", 
    mi->IsGenericMethodDefinition);
	

如果当前 MethodInfo 表示泛型方法定义,则:

  • IsGenericMethodDefinition 返回 true

  • 对于该 Type 方法返回的数组中的每个对象 GetGenericArguments()

  • Type.IsGenericParameter 属性返回 true

  • Type.DeclaringMethod返回当前的 MethodInfo

  • Type.GenericParameterPosition属性与 Type 对象在数组中的位置相同。

    使用 IsGenericMethodDefinition 属性可确定是否已将类型参数分配给泛型方法的类型参数。 如果已分配类型参数, IsGenericMethodDefinition 即使某些类型参数是 Type 表示封闭类型的类型参数的对象,属性也会返回 false。 例如,请考虑以下 C # 、Visual Basic 和 c + + 代码:

    ```cs
    class C
        T N<T,U>(T t, U u) {...}
        public V M<V>(V v)
            return N<V,int>(v, 42);
    ```vb
    Class C
        Public Function N(Of T,U)(ByVal ta As T, ByVal ua As U) As T
        End Function
        Public Function M(Of V)(ByVal va As V ) As V
            Return N(Of V, Integer)(va, 42)
        End Function
    End Class
    ```cpp
    ref class C
    private:
        generic <typename T, typename U> T N(T t, U u) {...}
    public:
        generic <typename V> V M(V v)
            return N<V, int>(v, 42);
    

    M 的方法体包含对方法 N 的调用,该方法指定 M 的类型参数和类型 Int32IsGenericMethodDefinition对于方法,属性返回 false N<V,int>

    尽管在 N<V,int> 通过 c 类反射时未遇到开放构造方法,但必须使用生成该方法才能将 MakeGenericMethod C 作为动态类发出。

    如果泛型方法定义包含声明类型的泛型参数,则会有特定于每个构造类型的泛型方法定义。 例如,请考虑以下 C # 和 Visual Basic 代码:

    ```csharp
    class B<U,V> {}
    class C<T> { public B<T,S> M<S>() {...}}
    ```vb
    Class B(Of U, V)
    End Class
    Class C(Of T)
        Public Function M(Of S)() As B(Of T, S)
        End Function
    End Class
    ```cpp
    generic <typename U, typename V> ref class B {};
    generic <typename T> ref class C
    public:
        generic <typename S> B<T,S>^ M() {...};
    

    在构造类型中 C<int> (C(Of Integer) Visual Basic) 中,泛型方法 M 返回 B<int, S> 。 在 open 类型中 C<T> ,M 返回 B<T, S> 。 在这两种情况下, IsGenericMethodDefinition 属性将返回 true MethodInfo 表示 M 的。

    有关特定于泛型方法的术语的固定条件列表,请参见 IsGenericMethod 属性。 有关泛型反射中使用的其他术语的固定条件列表,请参见 IsGenericType 属性。

  •