MethodInfo.IsGenericMethodDefinition 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
會得到一個值,表示電流 MethodInfo 是否代表一般方法的定義。
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
屬性值
true若物件MethodInfo代表一般方法的定義;否則,。 false
範例
以下程式碼範例使用該 IsGenericMethodDefinition 特性來顯示訊息,指示 a MethodInfo 是否代表一般方法定義。
此範例是該方法更大 MakeGenericMethod 範例的一部分。
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);
備註
若電流 MethodInfo 代表一般方法定義,則:
IsGenericMethodDefinition傳回true。對於陣列中每個 Type 由方法回傳 GetGenericArguments() 的物件:
- 該 Type.IsGenericParameter 性質返回
true。 - 返回 Type.DeclaringMethod 電流 MethodInfo。
- 這個 Type.GenericParameterPosition 屬性與物件在陣列中的位置 Type 相同。
- 該 Type.IsGenericParameter 性質返回
利用此 IsGenericMethodDefinition 特性判斷是否已將型別參數指派給一般方法的型別參數。 若已指派型別參數, IsGenericMethodDefinition 該屬性仍回傳 false,即使部分型別參數是 Type 代表包圍型別參數的物件。 例如,請考慮下列程式碼:
```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);
}
};
```
M 的方法主體包含對方法 N 的呼叫,指定 M 的型別參數及型別 Int32。 對於方法N<V,int>,該IsGenericMethodDefinition性質回傳為假。
備註
雖然在反射類 C 時不會遇到開構式方法 N<V,int> ,但必須生成 , MakeGenericMethod 才能將 C 作為動態類發出。
若一般方法定義包含宣告型別的通用參數,則每個建構型別都會有專屬的通用方法定義。 例如,請考慮下列程式碼:
```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() {...};
};
```
在構造型態 C<int>(在 Visual Basic 中C(Of Integer)),一般方法 M 回傳 B<int, S>。 在開型 C<T>態 中,M 返回 B<T, S>。 在這兩種情況下,IsGenericMethodDefinition代表 M 的性質都會返回trueMethodInfo。
關於通用方法專有項不變條件的列表,請參見性質。IsGenericMethod 關於一般反射中其他術語不變條件的列表,請參見性質。IsGenericType