私は を持っており、ExpandoObject
実行時に名前でプロパティを返すゲッターを作成したいと考えています。名前はハードコーディングされているのではなく、文字列で指定されています。
たとえば、私はこれを行うことができます:
account.features.isEmailEnabled;
そしてそれはtrueを返します。 account
でありExpandoObject
、またfeatures
ですExpandoObject
。だから私ExpandoObject
は other を含むを持っていますExpandoObjects
。
だから私ができるようにしたいのはこれです:
account.features.GetProperty("isEmailEnabled");
そしてそれがtrueを返すようにします。
その理由は、私には多くの機能があり、必要な機能の名前を渡すことができる 1 つの汎用ゲッター メソッドを記述できるようにしたいためです。メソッドは account.features.whatever の値を返します (ここで、"whatever" は、文字列をジェネリック getter メソッドに渡すことによって指定されます)。そうしないと、機能ごとに 30 個ほどのゲッターを作成する必要があります。
私は多くの研究を行い、次のようなことを試みました:
var prop = account.features.GetType();
// this returns System.Dyanmic.ExpandoObject
に続く
var value = prop.GetProperty(featureNameAsString);
ただし、value
常に null として返されます。理由がわかりません。私ができるウォッチウィンドウでaccount.features.isEmailEnabled
、それはtrueを示し、ブール値であると言います。しかし、上記のアプローチを使用してこの値を取得しようとすると、isEmailEnabled
nullfeatureNameAsString
になるだけです。
複雑すぎずに、私が間違っている可能性があることと、良いアプローチを教えてください。
4.5.1 フレームワークで ASP.NET を使用しています。