GetValue类上的GetConstantValueGetRawConstantValuePropertyInfo方法有什么区别?不幸的是,有关该主题的MSDN文档并不十分清楚。

最佳答案

GetConstantValueGetRawConstantValue都旨在与文字一起使用(对于字段,请考虑const,但从语义上讲,它不仅仅适用于字段)-与GetValue不同,它在运行时会获得某些东西的实际值,一个恒定值(通过GetConstantValueGetRawConstantValue)与运行时无关-它直接来自元数据。

因此,我们来了解GetConstantValueGetRawConstantValue之间的区别。基本上,后者是更直接和原始的形式。这主要显示给enum成员;例如-如果我有一个:

enum Foo { A = 1, B = 2 }
...
const Foo SomeValue = Foo.B;

那么GetConstantValueSomeValueFoo.B;但是,GetRawConstantValueSomeValue2。特别是,如果您使用的是仅反射上下文,则不能使用GetConstantValue,因为这需要将值装箱到Foo,而使用仅反射时则不能这样做。

10-08 12:44