MethodInfo.IsGenericMethodDefinition Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera wartość wskazującą, czy bieżący MethodInfo reprezentuje definicję metody ogólnej.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Wartość właściwości
true
MethodInfo jeśli obiekt reprezentuje definicję metody ogólnej; w przeciwnym razie false
.
Przykłady
Poniższy przykład kodu używa IsGenericMethodDefinition
właściwości , aby wyświetlić komunikat wskazujący, czy obiekt MethodInfo reprezentuje definicję metody ogólnej.
Ten przykład jest częścią większego przykładu udostępnionego MakeGenericMethod dla metody .
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);
Uwagi
Jeśli bieżący MethodInfo reprezentuje definicję metody ogólnej, wówczas:
IsGenericMethodDefinition
metoda zwraca wartośćtrue
.Dla każdego Type obiektu w tablicy zwróconej przez metodę GetGenericArguments() :
Właściwość Type.IsGenericParameter zwraca wartość
true
.Funkcja Type.DeclaringMethod zwraca bieżący MethodInfoelement .
Właściwość Type.GenericParameterPosition jest taka sama jak pozycja Type obiektu w tablicy.
IsGenericMethodDefinition
Użyj właściwości , aby określić, czy argumenty typu zostały przypisane do parametrów typu metody ogólnej. Jeśli argumenty typu zostały przypisane, właściwość zwraca wartość false, IsGenericMethodDefinition
nawet jeśli niektóre argumenty typu są Type obiektami reprezentującymi parametry typu otaczającego typów. Rozważmy na przykład następujący kod C#, Visual Basic i 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);
}
};
```
Treść metody języka M zawiera wywołanie metody N, określając parametr typu M i typ Int32. Właściwość IsGenericMethodDefinition
zwraca wartość false dla metody N<V,int>
.
Uwaga
Mimo że metoda N<V,int>
open constructed nie jest napotkana podczas odzwierciedlania w klasie C, należy ją wygenerować przy użyciu metody MakeGenericMethod w celu emitowania języka C jako klasy dynamicznej.
Jeśli definicja metody ogólnej zawiera ogólne parametry typu deklarowanego, będzie istnieć definicja metody ogólnej specyficzna dla każdego skonstruowanego typu. Rozważmy na przykład następujący kod w językach C# i 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() {...};
};
```
W skonstruowanym typie C<int>
(C(Of Integer)
w Visual Basic) metoda ogólna języka M zwraca wartość B<int, S>
. W typie otwierania funkcja C<T>
M zwraca wartość B<T, S>
. W obu przypadkach IsGenericMethodDefinition
właściwość zwraca true
wartość dla elementu reprezentującego MethodInfo język M.
Aby uzyskać listę niezmiennych warunków dotyczących warunków specyficznych dla metod ogólnych, zobacz IsGenericMethod właściwość . Aby uzyskać listę niezmiennych warunków dla innych terminów używanych w odbiciu ogólnym, zobacz IsGenericType właściwość .