1. ホーム
  2. c#

[解決済み] C#で独自の動的型または動的オブジェクトを作成する方法は?

2022-04-22 15:02:46

質問

例えば、こんなものがあります。 ビューバッグ プロパティの ControllerBase このオブジェクトは、動的に値を取得/設定したり、追加のフィールドやプロパティをいくつでも追加することができ、クールです。 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;

を、プロパティの動的な追加と設定により実現します。

解決方法は?

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クラス とサンプルをご覧ください。実行時に動的にメンバーを追加・削除することができるオブジェクトを表します。