例えば、バッグを見るクラスのプロパティControllerBase
で、動的に値を取得/設定したり、このオブジェクトに任意の数のフィールドやプロパティを追加したりすることができます。これは素晴らしいことです。私は、MVCアプリケーションやController
クラス以外の他の種類のアプリケーションでも、このようなものを使いたいと思っています。動的オブジェクトを作成し、そのプロパティを次のように設定します。
1. dynamic MyDynamic = new { A="a" };
2. MyDynamic.A = "asd";
3. Console.WriteLine(MyDynamic.A);
RuntimeBinderException
メッセージを受け取りましたプロパティまたはインデクサー '<>f__AnonymousType0.A' を割り当てることはできません -- 読み取り専用です2 行目にあります。また、これは私が探しているものではないと思います。次のようなことができるクラスがあるかもしれません。
??? MyDynamic = new ???();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = DateTime.Now;
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
動的なプロパティの追加と設定が可能です。
ベストアンサー1
dynamic MyDynamic = new System.Dynamic.ExpandoObject();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = "C";
MyDynamic.Number = 12;
MyDynamic.MyMethod = new Func<int>(() =>
{
return 55;
});
Console.WriteLine(MyDynamic.MyMethod());
詳細はこちらExpandoObject クラスその他のサンプル: 実行時にメンバーを動的に追加および削除できるオブジェクトを表します。