はちょうどそれの名前を知ることにより、変数の値を取得する方法は、次のように、あります:C#で名前で変数を取得
double temp = (double)MyClass.GetValue("VariableName");
は、私は通常、この
のような変数にアクセスした場合double temp = MyClass.VariableName;
はちょうどそれの名前を知ることにより、変数の値を取得する方法は、次のように、あります:C#で名前で変数を取得
double temp = (double)MyClass.GetValue("VariableName");
は、私は通常、この
のような変数にアクセスした場合double temp = MyClass.VariableName;
reflectionを使用できます。例えばPropertyName
はMyClass
のパブリックpropertyであり、あなたは、あなたは可能性がこのクラスのインスタンスがある場合:それはfield国民の場合
MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null);
:もちろん
MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance);
あなたは注意する必要がありますし、その反射doesnのコストはかからない。直接のプロパティ/フィールドへのアクセスと比較して、パフォーマンス上のペナルティが生じる可能性があります。
注意してください。これを頻繁に使用すると非常に遅いかもしれません。 –
@Erno、はい、絶対に。 –
リフレクションは10ケースのスイッチフィルタより遅くなるでしょうか? – Andreas
あなたは反射を使用する必要があります。詳細はhttp://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspxを参照してください。
私は、あなたがこれを行うために必要なコンテキストについて興味があります。プロパティとしての値へのアクセスでは通常十分ではありません。 –