MethodInfo.IsGenericMethodDefinition MethodInfo.IsGenericMethodDefinition MethodInfo.IsGenericMethodDefinition MethodInfo.IsGenericMethodDefinition Property

Определение

Возвращает значение, указывающее, представляет ли текущий объект MethodInfo определение универсального метода.Gets a value indicating whether the current MethodInfo represents the definition of a generic method.

public:
 virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean

Значение свойства

Значение true, если объект MethodInfo представляет определение универсального метода; в противном случае — значение false.true if the MethodInfo object represents the definition of a generic method; otherwise, false.

Примеры

В следующем примере кода IsGenericMethodDefinition свойство используется для вывода сообщения о MethodInfo том, представляет ли определение универсального метода.The following code example uses the IsGenericMethodDefinition property to display a message indicating whether a MethodInfo represents a generic method definition.

Этот пример является частью большого примера, приведенного для MakeGenericMethod метода.This example is part of a larger example provided for the MakeGenericMethod method.

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 объект представляет определение универсального метода, то:If the current MethodInfo represents a generic method definition, then:

Используйте свойство IsGenericMethodDefinition , чтобы определить, были ли назначены аргументы типа параметрам типа универсального метода.Use the IsGenericMethodDefinition property to determine whether type arguments have been assigned to the type parameters of a generic method. Если аргументы типа были назначены, IsGenericMethodDefinition свойство возвращает значение false, даже если некоторые аргументы типа являются Type объектами, представляющими параметры типов включающих типов.If type arguments have been assigned, the IsGenericMethodDefinition property returns false even if some of the type arguments are Type objects that represent type parameters of enclosing types. Например, рассмотрим следующие C#, Visual Basic и C++ код:For example, consider the following C#, Visual Basic, and C++ code:

```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 и типа Int32.The method body of M contains a call to method N, specifying the type parameter of M and the type Int32. Свойство возвращает значение false для метода N<V,int>. IsGenericMethodDefinitionThe IsGenericMethodDefinition property returns false for method N<V,int>.

Примечание

Хотя открытый сконструированный метод N<V,int> не обнаруживается при отражении класса C, он должен быть создан с помощью MakeGenericMethod , чтобы выдать C в качестве динамического класса.Although the open constructed method N<V,int> is not encountered when reflecting over class C, it must be generated using MakeGenericMethod in order to emit C as a dynamic class.

Если определение универсального метода содержит универсальные параметры объявляющего типа, то для каждого сконструированного типа будет определено определение универсального метода.If a generic method definition includes generic parameters of the declaring type, there will be a generic method definition specific to each constructed type. Например, рассмотрим следующий код C# и Visual Basic:For example, consider the following C# and Visual Basic code:

```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>значение.In the constructed type C<int> (C(Of Integer) in Visual Basic), the generic method M returns B<int, S>. В открытом типе C<T>функция M возвращает B<T, S>.In the open type C<T>, M returns B<T, S>. В обоих случаях IsGenericMethodDefinition свойство возвращает true значение MethodInfo , представляющее M.In both cases, the IsGenericMethodDefinition property returns true for the MethodInfo that represents M.

Список инвариантных условий для терминов, характерных для универсальных методов, см. IsGenericMethod в описании свойства.For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. Список инвариантных условий для других терминов, используемых в универсальном отражении, см. IsGenericType в описании свойства.For a list of the invariant conditions for other terms used in generic reflection, see the IsGenericType property.

Применяется к

Дополнительно