PropertyInfo
クラスのGetValue
とGetConstantValue
とGetRawConstantValue
メソッドの違いは何ですか?残念なことに、MSDNのドキュメントはあまり明確ではありません。GetValue、GetConstantValue、GetRawConstantValueの相違点
答えて
両方GetConstantValue
とGetRawConstantValue
リテラルで使用するために意図されている(フィールドの場合const
と思いますが、意味的それだけでフィールド以上に適用することができます) - GetValue
とは異なり、実行時に何かの実際の値を取得することになります、一定値(GetConstantValue
またはGetRawConstantValue
経由)は実行時依存ではなく、メタデータから直接です。
次に、GetConstantValue
とGetRawConstantValue
の違いになります。基本的に、後者はより直接的かつ基本的な形式です。これは主にenum
のメンバーを示しています。例えば - 私が持っていた場合:
enum Foo { A = 1, B = 2 }
...
const Foo SomeValue = Foo.B;
その後、SomeValue
のGetConstantValue
はFoo.B
です。しかし、GetRawConstantValue
はSomeValue
であり、2
である。具体的には、反射専用のコンテキストを使用している場合はボクシングの値をFoo
にする必要があるため、反射専用のコンテキストを使用している場合はGetConstantValue
を使用することはできません。
私はあなたが何をしようとしているのか分かりません。とにかく、単にリフレクションを使用してプロパティの値を取得する場合は、GetValueを使用する必要があります。私。この例ではGetConstantValueまたはGetRawConstantValueを呼び出す場合の特性が一定でないので、あなたは、InvalidOperationExceptionがを得ること
private string _foo = "fooValue";
public string Foo
{
get { return _foo; }
set { _foo = value; }
}
public void Test()
{
PropertyInfo pi = this.GetType().GetProperty("Foo");
string v = (string)pi.GetValue(this, null);
}
注:このような何か。
GetConstantValueとGetRawConstantValueの違いは、Marcによって完全に説明されています。
- 1. googleアプリケーションスクリプトのgetValue()とgetDisplayValue()の相違点
- 2. IE標準、相違点および相違点の相違点
- 3. イメージコンストラクタの相違点
- 4. NSPredicateの相違点
- 5. JavaPairRDDの相違点
- 6. スプリングスコープの相違点
- 7. DOCTYPEの相違点
- 8. =と:=の相違点
- 9. PHPの相違点
- 10. open()の相違点
- 11. OPENCVの相違点
- 12. MouseEventsの相違点
- 13. プロローグの相違点
- 14. ルビーメソッドの相違点
- 15. CLRの相違点
- 16. マークアップの相違点
- 17. importとconstとの相違点とcommonjsでの相違点
- 18. PHPUnitとPHPSpecの相違点と相違点
- 19. Amazonクラウドホスティング、相違点
- 20. JavaScriptシェル - 相違点
- 21. このコードの相違点
- 22. jQueryセレクタの相違点
- 23. CBUUIDとNSUUIDの相違点
- 24. NSTimeZoneとGMTの相違点
- 25. int、NSInteger、NSUIntegerの相違点
- 26. ListViewとArrayListの相違点
- 27. 2タイムスタンプの相違点
- 28. removeDialog()、dismissDialog()、dismiss()の相違点
- 29. Tomcat Javaコンパイラの相違点
- 30. org.apache.hive.jdbc.HiveStatement/org.apache.hadoop.hive.jdbc.HiveStatementの相違点
Marcあなたの説明はフィールドの 'Properties'について' GetRawConstantValue'をカバーしています。プロパティは正しくできませんか? AFAIK C#には、定数セマンティクスでプロパティを表現するためのメカニズムが含まれていないという点で、間違いがあるとすれば、「Properties」 –
@SriramSakthivelの例がよく表示されます。 ILには、個々の言語より多くのものが含まれています。そうではありません。私は、生のILを書いていない、例を挙げることは可能だとは思わない。 –
まあ、私の推測は正しかった、ありがとうmarc –