MethodInfo.IsGenericMethodDefinition Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald die aangeeft of de huidige MethodInfo de definitie van een algemene methode vertegenwoordigt.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Waarde van eigenschap
true als het MethodInfo object de definitie van een algemene methode vertegenwoordigt; falseanders.
Voorbeelden
In het volgende codevoorbeeld wordt de IsGenericMethodDefinition eigenschap gebruikt om een bericht weer te geven dat aangeeft of een MethodInfo definitie van een algemene methode vertegenwoordigt.
Dit voorbeeld maakt deel uit van een groter voorbeeld dat is opgegeven voor de MakeGenericMethod methode.
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);
Opmerkingen
Als de huidige MethodInfo een algemene methodedefinitie vertegenwoordigt, gaat u als volgende te werk:
IsGenericMethodDefinitionretourneerttrue.Voor elk Type object in de matrix dat wordt geretourneerd door de GetGenericArguments() methode:
- De Type.IsGenericParameter eigenschap retourneert
true. - De Type.DeclaringMethod retourneert de huidige MethodInfo.
- De Type.GenericParameterPosition eigenschap is hetzelfde als de positie van het Type object in de matrix.
- De Type.IsGenericParameter eigenschap retourneert
Gebruik de IsGenericMethodDefinition eigenschap om te bepalen of typeargumenten zijn toegewezen aan de typeparameters van een algemene methode. Als typeargumenten zijn toegewezen, retourneert de IsGenericMethodDefinition eigenschap onwaar, zelfs als sommige van de typeargumenten objecten zijn Type die typeparameters van omsluittypen vertegenwoordigen. Denk bijvoorbeeld aan de volgende code:
```csharp
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);
}
};
```
De hoofdtekst van de methode M bevat een aanroep naar methode N, waarbij de parameter van het type M en het type Int32wordt opgegeven. De IsGenericMethodDefinition eigenschap retourneert onwaar voor methode N<V,int>.
Note
Hoewel de open samengestelde methode N<V,int> niet wordt aangetroffen bij het weergeven van klasse C, moet deze worden gegenereerd met het oog MakeGenericMethod op het verzenden van C als een dynamische klasse.
Als een algemene methodedefinitie algemene parameters van het declaratietype bevat, is er een algemene methodedefinitie die specifiek is voor elk samengesteld type. Denk bijvoorbeeld aan de volgende 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() {...};
};
```
In het samengestelde type C<int> (C(Of Integer) in Visual Basic), retourneert de algemene methode M B<int, S>. In het geopende type C<T>wordt M geretourneerd B<T, S>. In beide gevallen retourneert true de IsGenericMethodDefinition eigenschap voor de MethodInfo waarde M.
Zie de IsGenericMethod eigenschap voor een lijst met invariante voorwaarden voor voorwaarden die specifiek zijn voor algemene methoden. Zie de IsGenericType eigenschap voor een lijst met de invariante voorwaarden voor andere termen die in algemene reflectie worden gebruikt.