MethodInfo.IsGenericMethodDefinition Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerlinin MethodInfo genel bir yöntemin tanımını temsil edip etmediğini belirten bir değer alır.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Özellik Değeri
true
MethodInfo nesnesi genel bir yöntemin tanımını temsil ederse; değilse, false
.
Örnekler
Aşağıdaki kod örneği, genel bir yöntem tanımını temsil edip etmediğini MethodInfo belirten bir ileti görüntülemek için özelliğini kullanırIsGenericMethodDefinition
.
Bu örnek, yöntemi için MakeGenericMethod sağlanan daha büyük bir örneğin parçasıdır.
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);
Açıklamalar
Geçerli MethodInfo , genel bir yöntem tanımını temsil ederse:
IsGenericMethodDefinition
döndürürtrue
.yöntemi tarafından döndürülen dizideki her Type nesne için GetGenericArguments() :
Type.IsGenericParameter özelliği döndürür
true
.geçerli Type.DeclaringMethodMethodInfodöndürür.
Type.GenericParameterPosition özelliği, nesnenin dizideki konumuyla Type aynıdır.
IsGenericMethodDefinition
Tür bağımsız değişkenlerinin genel bir yöntemin tür parametrelerine atanıp atanmadığını belirlemek için özelliğini kullanın. Tür bağımsız değişkenleri atanmışsa, IsGenericMethodDefinition
tür bağımsız değişkenlerinden Type bazıları kapsayan türlerin tür parametrelerini temsil eden nesneler olsa bile özelliği false döndürür. Örneğin, aşağıdaki C#, Visual Basic ve C++ kodunu göz önünde bulundurun:
```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);
}
};
```
M'nin yöntem gövdesi, M türü parametresini ve türünü Int32belirterek N yöntemine bir çağrı içerir.
IsGenericMethodDefinition
özelliği yöntemi N<V,int>
için false döndürür.
Not
C sınıfına yansıtılırken açık oluşturulan yöntemle N<V,int>
karşılaşılmasa da, C'yi dinamik bir sınıf olarak yaymak için kullanılarak MakeGenericMethod oluşturulması gerekir.
Genel yöntem tanımı bildirim türüne ait genel parametreler içeriyorsa, her bir yapı türüne özgü genel bir yöntem tanımı olacaktır. Örneğin, aşağıdaki C# ve Visual Basic kodunu göz önünde bulundurun:
```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() {...};
};
```
(Visual Basic'te) yerleşik türünde C<int>
C(Of Integer)
M genel yöntemi döndürürB<int, S>
. Açık türündeki C<T>
M, döndürür B<T, S>
. Her iki durumda da özelliği M'yi IsGenericMethodDefinition
temsil eden için MethodInfo döndürürtrue
.
Genel yöntemlere özgü koşulların sabit koşullarının listesi için özelliğine IsGenericMethod bakın. Genel yansımada kullanılan diğer terimlere ilişkin sabit koşulların listesi için özelliğine IsGenericType bakın.