C# で独自の動的型または動的オブジェクトを作成するにはどうすればよいでしょうか? 質問する

C# で独自の動的型または動的オブジェクトを作成するにはどうすればよいでしょうか? 質問する

例えば、バッグを見るクラスのプロパティ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 クラスその他のサンプル: 実行時にメンバーを動的に追加および削除できるオブジェクトを表します。

おすすめ記事