MethodInfo.IsGenericMethodDefinition Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die aktuelle MethodInfo die Definition einer generischen Methode darstellt.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Eigenschaftswert
true
, wenn das MethodInfo-Objekt die Definition einer generischen Methode darstellt, andernfalls false
.
Beispiele
Im folgenden Codebeispiel wird die IsGenericMethodDefinition
-Eigenschaft verwendet, um eine Meldung anzuzeigen, die angibt, ob eine MethodInfo generische Methodendefinition darstellt.
Dieses Beispiel ist Teil eines größeren Beispiels, das für die MakeGenericMethod -Methode bereitgestellt wird.
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);
Hinweise
Wenn der aktuelle MethodInfo eine generische Methodendefinition darstellt, dann:
IsGenericMethodDefinition
gibttrue
zurück.Für jedes Type Objekt im Array, das von der GetGenericArguments() -Methode zurückgegeben wird:
Die Type.IsGenericParameter-Eigenschaft gibt
true
zurück.Gibt Type.DeclaringMethod den aktuellen MethodInfozurück.
Die Type.GenericParameterPosition -Eigenschaft entspricht der Position des Type Objekts im Array.
Verwenden Sie die IsGenericMethodDefinition
-Eigenschaft, um zu bestimmen, ob den Typparametern einer generischen Methode Typargumente zugewiesen wurden. Wenn Typargumente zugewiesen wurden, gibt die IsGenericMethodDefinition
Eigenschaft false zurück, auch wenn einige der Typargumente Objekte sind Type , die Typparameter von eingeschlossenen Typen darstellen. Betrachten Sie beispielsweise den folgenden C#-, Visual Basic- und 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);
}
};
```
Der Methodentext von M enthält einen Aufruf der Methode N, der den Typparameter M und den Typ Int32angibt. Die IsGenericMethodDefinition
-Eigenschaft gibt false für die -Methode N<V,int>
zurück.
Hinweis
Obwohl die offene konstruierte Methode N<V,int>
nicht auftritt, wenn sie über Klasse C reflektiert wird, muss sie mit MakeGenericMethod generiert werden, um C als dynamische Klasse auszuweisen.
Wenn eine generische Methodendefinition generische Parameter des deklarierenden Typs enthält, gibt es eine generische Methodendefinition, die für jeden konstruierten Typ spezifisch ist. Betrachten Sie beispielsweise den folgenden C#- und 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() {...};
};
```
Im konstruierten Typ C<int>
(C(Of Integer)
in Visual Basic) gibt die generische Methode M zurück B<int, S>
. Im geöffneten Typ C<T>
gibt M zurück B<T, S>
. In beiden Fällen gibt die IsGenericMethodDefinition
-Eigenschaft für das zurück true
, das MethodInfo M darstellt.
Eine Liste der invarianten Bedingungen für begriffe, die für generische Methoden spezifisch sind, finden Sie in der IsGenericMethod -Eigenschaft. Eine Liste der invarianten Bedingungen für andere Begriffe, die in der generischen Reflexion verwendet werden, finden Sie in der IsGenericType -Eigenschaft.