[英]How to extract generic method constraints via reflection in C#?
給定System.Reflection.MethodInfo
類型的對象如何提取泛型參數約束? 不知怎的,我找不到有關此的合理信息。
您需要做的就是獲取泛型方法定義,並在其上列出泛型參數:
method
.GetGenericMethodDefinition()
.GetGenericArguments()
.Select(i => i.GetGenericParameterConstraints())
.Dump();
但請注意,這並不是100%對應於C#的通用類型約束 - 有一點擺動空間。 不過,如果你只關心例如基類型約束,它會工作正常:)
作為一個例子, class
實際上並不是一個類型約束,有趣的是, struct
被“翻譯”為System.ValueType
(並不太令人驚訝)。 new()
也不是類型約束,因此此方法無法找到它。
如果您還需要考慮這些約束,請使用Select
的GenericParameterAttributes
屬性。 例如, struct
約束將為您提供NotNullableValueTypeConstraint | DefaultConstructorConstraint
NotNullableValueTypeConstraint | DefaultConstructorConstraint
。
您可能正在尋找Type.GetGenericParameterConstraints Method()
返回Type對象的數組,表示當前泛型類型參數的約束。
還有Type.GetGenericArguments方法()
返回Type對象的數組,表示閉合泛型類型的類型參數或泛型類型定義的類型參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.