問題

JavaScriptでコードを動的に実行するためにeval("something()");を実行できます。 C#で同じことをする方法はありますか?

私がしようとしていることの例は次のとおりです。整数変数(iなど)があり、名前によって複数のプロパティがあります。 "Property1"、 "Property2"、 "Property3"など 今、私はiの値に応じて "Propertyi"プロパティでいくつかの操作を実行したいと思います。

これはJavascriptで本当に簡単です。 C#でこれを行う方法はありますか?

  ベストアンサー

残念ながら、C#はそのような動的言語ではありません。

しかし、あなたができることは、クラスとすべてでいっぱいのC#ソースコードファイルを作成し、C#のCodeDomプロバイダを通して実行し、それをアセンブリにコンパイルしてから実行することです。

MSDNのこのフォーラムの投稿には、ページの下にいくつかのサンプルコードがある回答が含まれています:
または は文字列から匿名メソッドを作成しますか?

私はこれが非常に良い解決策だとはほとんど言いませんが、とにかく可能です。

その文字列でどのようなコードを期待しますか?たとえば、数式だけの有効なコードのマイナーサブセットであれば、他の選択肢が存在する可能性があります。


編集:まあ、それは私に質問を徹底的に読むように教えてくれます。はい、反射はあなたにここでいくつかの助けを与えることができるでしょう。

まず、個々のプロパティを取得するために、次のコードを使用して、クラスの特定のプロパティのPropertyInfoオブジェクトを取得し、そのオブジェクトを使用して特定のオブジェクトを操作できます。

 String propName = "Text";
PropertyInfo pi = someObject.GetType().GetProperty(propName);
pi.SetValue(someObject, "New Value", new Object[0]);
 

リンク: PropertyInfo.SetValueメソッド

  同じタグがついた質問を見る

c#reflectionpropertiesc#-2.0