MethodInfo.IsGenericMethodDefinition Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy értéket kap, amely jelzi, hogy az aktuális MethodInfo érték egy általános metódus definícióját jelöli-e.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Tulajdonság értéke
trueha az MethodInfo objektum egy általános metódus definícióját jelöli; ellenkező esetben. false
Példák
Az alábbi példakód a IsGenericMethodDefinition tulajdonság használatával jelenít meg egy üzenetet, amely jelzi, hogy egy MethodInfo általános metódusdefiníciót jelöl-e.
Ez a példa a metódushoz MakeGenericMethod megadott nagyobb példa része.
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);
Megjegyzések
Ha az aktuális MethodInfo érték egy általános metódusdefiníciót jelöl, akkor:
IsGenericMethodDefinitionvisszaadjatrue.A metódus által visszaadott tömb minden objektumához TypeGetGenericArguments() :
- A Type.IsGenericParameter tulajdonság visszaadja a következőt
true: . - Az Type.DeclaringMethod aktuális MethodInfoértéket adja vissza.
- A Type.GenericParameterPosition tulajdonság megegyezik a tömb objektumának helyzetével Type .
- A Type.IsGenericParameter tulajdonság visszaadja a következőt
IsGenericMethodDefinition A tulajdonság használatával megállapíthatja, hogy a típusargumentumok hozzá lettek-e rendelve egy általános metódus típusparamétereihez. Ha a típusargumentumok hozzárendelése megtörtént, a IsGenericMethodDefinition tulajdonság akkor is hamis értéket ad vissza, ha a típusargumentumok Type egy része olyan objektum, amely a sorba foglalt típusok típusparamétereit jelöli. Vegyük például a következő kódot:
```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);
}
};
```
Az M metódustörzse az N metódus meghívását tartalmazza, amely megadja az M típusparaméterét és a típust Int32. A IsGenericMethodDefinition tulajdonság hamis értéket ad vissza a metódushoz N<V,int>.
Note
Bár a nyíltan létrehozott metódus N<V,int> nem található meg a C osztályon keresztüli tükrözéskor, a C dinamikus osztályként való kibocsátásához létre kell hozni MakeGenericMethod .
Ha egy általános metódusdefiníció a deklarálási típus általános paramétereit tartalmazza, minden egyes létrehozott típusra vonatkozóan lesz egy általános metódusdefiníció. Vegyük például a következő kódot:
```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() {...};
};
```
A C<int> (C(Of Integer) Visual Basic) létrehozott típusban az M általános metódus B<int, S> ad vissza. A nyitott típusban C<T>az M ad B<T, S>vissza. Mindkét esetben a tulajdonság IsGenericMethodDefinitiontrue az MethodInfo M értéket jelöli.
Az általános metódusokra vonatkozó kifejezések invariáns feltételeinek listáját a IsGenericMethod tulajdonságban találja. Az általános tükrözésben használt egyéb kifejezések invariáns feltételeinek listáját a IsGenericType tulajdonságban találja.