我需要在运行时使用它。我使用Reflector检查过,像Int16这样的值类型行应该包含
<Serializable, StructLayout(LayoutKind.Sequential), ComVisible(True)> _
Public Structure Int16
Implements IComparable, IFormattable, IConvertible, IComparable(Of Short), IEquatable(Of Short)
Public Const MaxValue As Short = &H7FFF
Public Const MinValue As Short = -32768
End Structure
但以下代码无效
Dim dummyValue = Activator.CreateInstance(GetType(UInt16))
Dim minValue As IComparable = DirectCast(dummyValue.GetType.GetProperty("MinValue").GetValue(dummyValue,
Nothing), IComparable)
任何想法如何解决?
编辑:仅针对我直接使用的示例 GetType(UInt16),但在实际代码中,此部分由设计时未知的实例替换。 NET类型
答案 0 :(得分:6)
使用GetType.GetField("MinValue")
。
常量被视为字段
答案 1 :(得分:1)
感谢Hanin在我之前回答的问题。这是他的答案的一些示例代码。
在此示例中,将整数值(17)分配给对象变量。然后检索此类型的静态字段MinValue,如果存在,则将该字段的值分配给对象变量:
FieldInfo fi;
object objInt = 17;
if((fi = objInt.GetType().GetField("MinValue")) != null)
{
objInt = fi.GetValue(null);
}
答案 2 :(得分:0)
这不是一个属性,它是一个常数......
你有什么理由不能打电话吗?: Integer.MaxValue Integer.MinValue