MethodInfo.IsGenericMethodDefinition Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un valor que indica si el MethodInfo actual representa la definición de un método genérico.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Valor de propiedad
true
si el objeto MethodInfo representa la definición de un método genérico; en caso contrario, false
.
Ejemplos
En el ejemplo de código siguiente se usa la IsGenericMethodDefinition
propiedad para mostrar un mensaje que indica si MethodInfo un objeto representa una definición de método genérico.
Este ejemplo forma parte de un ejemplo más grande proporcionado para el MakeGenericMethod método .
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);
Comentarios
Si el objeto actual MethodInfo representa una definición de método genérico, haga lo siguiente:
IsGenericMethodDefinition
devuelvetrue
.Para cada Type objeto de la matriz devuelta por el GetGenericArguments() método :
La propiedad Type.IsGenericParameter devuelve
true
.Type.DeclaringMethod devuelve el objeto actualMethodInfo.
La Type.GenericParameterPosition propiedad es la misma que la posición del Type objeto en la matriz.
Utilice la IsGenericMethodDefinition
propiedad para determinar si se han asignado argumentos de tipo a los parámetros de tipo de un método genérico. Si se han asignado argumentos de tipo, la IsGenericMethodDefinition
propiedad devuelve false incluso si algunos de los argumentos de tipo son Type objetos que representan parámetros de tipo de tipos envolventes. Por ejemplo, considere el siguiente código de C#, Visual Basic y 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);
}
};
```
El cuerpo del método de M contiene una llamada al método N, especificando el parámetro de tipo de M y el tipo Int32. La IsGenericMethodDefinition
propiedad devuelve false para el método N<V,int>
.
Nota
Aunque no se encuentra el método N<V,int>
construido abierto al reflejar sobre la clase C, se debe generar utilizando MakeGenericMethod para emitir C como una clase dinámica.
Si una definición de método genérico incluye parámetros genéricos del tipo declarante, habrá una definición de método genérica específica de cada tipo construido. Por ejemplo, considere el siguiente código de C# y 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() {...};
};
```
En el tipo C<int>
construido (C(Of Integer)
en Visual Basic), el método genérico M devuelve B<int, S>
. En el tipo C<T>
abierto , M devuelve B<T, S>
. En ambos casos, la IsGenericMethodDefinition
propiedad devuelve true
para el MethodInfo que representa M.
Para obtener una lista de las condiciones invariables para los términos específicos de los métodos genéricos, vea la IsGenericMethod propiedad . Para obtener una lista de las condiciones invariables para otros términos usados en la reflexión genérica, vea la IsGenericType propiedad .