GetValue
类上的GetConstantValue
,GetRawConstantValue
和PropertyInfo
方法有什么区别?不幸的是,有关该主题的MSDN文档并不十分清楚。
最佳答案
GetConstantValue
和GetRawConstantValue
都旨在与文字一起使用(对于字段,请考虑const
,但从语义上讲,它不仅仅适用于字段)-与GetValue
不同,它在运行时会获得某些东西的实际值,一个恒定值(通过GetConstantValue
或GetRawConstantValue
)与运行时无关-它直接来自元数据。
因此,我们来了解GetConstantValue
和GetRawConstantValue
之间的区别。基本上,后者是更直接和原始的形式。这主要显示给enum
成员;例如-如果我有一个:
enum Foo { A = 1, B = 2 }
...
const Foo SomeValue = Foo.B;
那么
GetConstantValue
的SomeValue
是Foo.B
;但是,GetRawConstantValue
的SomeValue
是2
。特别是,如果您使用的是仅反射上下文,则不能使用GetConstantValue
,因为这需要将值装箱到Foo
,而使用仅反射时则不能这样做。