MethodInfo.GetGenericArguments 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回 Type 物件的陣列,這些物件代表泛型方法的類型引數,或泛型方法定義的類型參數。
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()
傳回
Type 物件的陣列,這些物件表示泛型方法的型別引數,或泛型方法定義的型別參數。 如果目前的方法不是泛型方法,則會傳回空白陣列。
- 屬性
例外狀況
不支援這個方法。
範例
下列程式代碼範例示範如何取得泛型方法的類型自變數,並加以顯示。
這個範例是針對方法提供之較大範例的 MakeGenericMethod 一部分。
// 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
備註
傳回數位的專案會依照它們出現在泛型方法的類型參數清單中的順序。
如果目前方法是封閉式建構方法 (,則 ContainsGenericParameters 屬性會傳回
false
) ,方法傳 GetGenericArguments 回的數位會包含已指派給泛型方法定義之泛型型別參數的類型。如果目前的方法是泛型方法定義,數位會包含類型參數。
如果目前的方法是開放式建構方法 (,則 ContainsGenericParameters 屬性會傳回
true
) 特定型別已指派給某些型別參數,而封入泛型型別的類型參數已指派給其他型別參數,則數位會同時包含類型和型別參數。 IsGenericParameter使用屬性來區分它們。 如需此案例的示範,請參閱 屬性的程式 ContainsGenericParameters 代碼範例。
如需泛型方法特定詞彙的不變異條件清單,請參閱 IsGenericMethod 屬性。 如需泛型反映中所使用之其他詞彙的不變異條件清單,請參閱 Type.IsGenericType 屬性。