MethodInfo.GetGenericArguments Yöntem
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.
Genel bir yöntemin Type tür bağımsız değişkenlerini veya genel bir yöntem tanımının tür parametrelerini temsil eden bir nesne dizisi döndürür.
public:
override cli::array <Type ^> ^ GetGenericArguments();
public override Type[] GetGenericArguments ();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments ();
override this.GetGenericArguments : unit -> Type[]
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetGenericArguments : unit -> Type[]
Public Overrides Function GetGenericArguments () As Type()
Döndürülenler
Genel bir yöntemin Type tür bağımsız değişkenlerini veya genel bir yöntem tanımının tür parametrelerini temsil eden bir nesne dizisi. Geçerli yöntem genel bir yöntem değilse boş bir dizi döndürür.
- Öznitelikler
Özel durumlar
Bu yöntem desteklenmez.
Örnekler
Aşağıdaki kod örneği, genel bir yöntemin tür bağımsız değişkenlerinin nasıl alınıp görüntüleneceğini gösterir.
Bu örnek, yöntemi için MakeGenericMethod sağlanan daha büyük bir örneğin parçasıdır.
// If this is a generic method, display its type arguments.
//
if (mi->IsGenericMethod)
{
array<Type^>^ typeArguments = mi->GetGenericArguments();
Console::WriteLine("\tList type arguments ({0}):",
typeArguments->Length);
for each (Type^ tParam in typeArguments)
{
// IsGenericParameter is true only for generic type
// parameters.
//
if (tParam->IsGenericParameter)
{
Console::WriteLine("\t\t{0} parameter position {1}" +
"\n\t\t declaring method: {2}",
tParam,
tParam->GenericParameterPosition,
tParam->DeclaringMethod);
}
else
{
Console::WriteLine("\t\t{0}", tParam);
}
}
}
// If this is a generic method, display its type arguments.
//
if (mi.IsGenericMethod)
{
Type[] typeArguments = mi.GetGenericArguments();
Console.WriteLine("\tList type arguments ({0}):",
typeArguments.Length);
foreach (Type tParam in typeArguments)
{
// IsGenericParameter is true only for generic type
// parameters.
//
if (tParam.IsGenericParameter)
{
Console.WriteLine("\t\t{0} parameter position {1}" +
"\n\t\t declaring method: {2}",
tParam,
tParam.GenericParameterPosition,
tParam.DeclaringMethod);
}
else
{
Console.WriteLine("\t\t{0}", tParam);
}
}
}
' If this is a generic method, display its type arguments.
'
If mi.IsGenericMethod Then
Dim typeArguments As Type() = mi.GetGenericArguments()
Console.WriteLine(vbTab & "List type arguments ({0}):", _
typeArguments.Length)
For Each tParam As Type In typeArguments
' IsGenericParameter is true only for generic type
' parameters.
'
If tParam.IsGenericParameter Then
Console.WriteLine(vbTab & vbTab _
& "{0} parameter position: {1}" _
& vbCrLf & vbTab & vbTab _
& " declaring method: {2}", _
tParam, _
tParam.GenericParameterPosition, _
tParam.DeclaringMethod)
Else
Console.WriteLine(vbTab & vbTab & tParam.ToString())
End If
Next tParam
End If
Açıklamalar
Döndürülen dizinin öğeleri, genel yöntem için tür parametreleri listesinde göründükleri sıradadır.
Geçerli yöntem kapalı bir yöntemse (yani ContainsGenericParameters özelliği döndürür
false
), yöntemi tarafından GetGenericArguments döndürülen dizi, genel yöntem tanımının genel tür parametrelerine atanmış türleri içerir.Geçerli yöntem genel bir yöntem tanımıysa, dizi tür parametrelerini içerir.
Geçerli yöntem, belirli türlerin bazı tür parametrelerine atandığı ve genel türleri kapsayan ContainsGenericParameters tür parametrelerinin diğer tür parametrelerine atandığı açık bir yöntemse (yani özelliği döndürür
true
), dizi hem tür hem de tür parametrelerini içerir. IsGenericParameter Ayırt etmek için özelliğini kullanın. Bu senaryonun gösterimi için özelliğinin kod örneğine ContainsGenericParameters bakın.
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 Type.IsGenericType bakın.