我有一个Constraints
对象,它将获得其他对象必须遵守的一组规则。
constraints
有一个方法叫做GetEnumValueRange<T>()
whereT
是 Enum 的一种类型。
因此,例如,我可以将枚举定义为:
[Flags]
public enum BoxWithAHook
{
None = 0,
Thing1 = 1,
Thing2 = 2,
...
// lots of other things that might be in the box
ThingN = N
}
然后,我可以获得在给定上下文中有效的一系列值BoxWithAHook
:
var val = constraints.GetEnumValueRange<BoxWithAHook>();
问题是我正在尝试使用反射来完成这项工作。我不能指定类型是BoxWithAHook
因为它可以是任何扩展的东西Enum
。这是我所拥有的一个例子:
if (propertyInfo.PropertyType.BaseType == typeof(Enum))
{
var val = constraints.GetEnumValueRange<>(); // what is the generic type here?
// now I can use val to get the constraint values
}
我可以指定泛型类型吗?理想情况下,这将起作用:
constraints.GetEnumValueRange<propertyInfo.PropertyType>();
但显然不是