给定一个类型的对象,System.Reflection.MethodInfo
我如何提取通用参数约束?不知何故,我找不到有关此的合理信息。
问问题
665 次
2 回答
4
您需要做的就是获取泛型方法定义,并在其上列出泛型参数:
method
.GetGenericMethodDefinition()
.GetGenericArguments()
.Select(i => i.GetGenericParameterConstraints())
.Dump();
但是,请注意,这并不是 100% 对应于 C# 的泛型类型约束 - 有一点回旋余地。不过,如果您只关心例如基本类型的约束,它会正常工作:)
例如,class
有趣的是,实际上根本不是类型约束,而struct
被“翻译”为System.ValueType
(不太令人惊讶)。new()
也不是类型约束,因此此方法无法找到它。
如果您还需要考虑这些约束,请使用GenericParameterAttributes
. Select
例如,struct
约束会给你NotNullableValueTypeConstraint | DefaultConstructorConstraint
.
于 2015-11-18T09:08:22.480 回答
0
您可能正在寻找Type.GetGenericParameterConstraints Method ()
返回表示当前泛型类型参数约束的 Type 对象数组。
还有Type.GetGenericArguments 方法 ()
返回表示封闭泛型类型的类型参数或泛型类型定义的类型参数的 Type 对象数组
于 2015-11-18T09:01:40.693 回答