11

次のように、変数の名前を知るだけで変数の値を取得する方法はありますか。

double temp = (double)MyClass.GetValue("VariableName");

通常、このような変数にアクセスするとき

double temp = MyClass.VariableName;
4

1 に答える 1

27

リフレクションを使用できます。たとえば、PropertyNameがパブリックプロパティMyClassあり、このクラスのインスタンスがある場合、次のことができます。

MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null);

パブリックフィールドの場合:

MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance);

もちろん、リフレクションは無料ではないことに注意してください。プロパティ/フィールドへの直接アクセスと比較して、パフォーマンスが低下する可能性があります。

于 2011-02-19T21:08:11.600 に答える