MethodInfo.IsGenericMethodDefinition Eigenschap

Definitie

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:

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.

Van toepassing op

Zie ook