書き込める匿名タイプのすべてのプロパティを取得する必要があります。匿名タイプの読み書きプロパティを取得する
例:
var person = new {Name = "Person's Name", Age = 25};
Type anonymousType = person.GetType();
var properties = anonymousType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
問題は、すべてのプロパティがそのCanWrite
財産false
を持っているということです。これは、非匿名型の場合にtrueとして返されます。
私はまたnull
を返しPropertyInfo.GetSetMethod()
への呼び出しを行う試してみました。
プロパティを書き込むことができるかどうかを確認するにはどうすればよいですか?
編集: おそらく、タイプが匿名かどうかを知ることで十分でしょう。反射を使用して型が匿名であるかどうかを調べるにはどうすればよいですか?
こんにちは、 「必ずしも」ではありませんか?あなたはそれについて少し詳しく説明できますか?また、私はsetメソッドも生成されることを期待していました。コンパイラは、使用されている場合にのみセッターを生成するのに十分なほどスマートですか? - ありがとう。 –
また、リフレクションを使用して型が匿名であるかどうかを知ることは可能ですか? –
C#で生成された匿名型のセッターを使用することはできません - 私は言うとおり、常に不変です。名前付きの型の場合、例に示すように、setterを持つかどうかは宣言に依存します。型がコンパイラによって作成されたかどうかを検出するために、別のSOの質問がどこかにあります。私はそれを見つけようとします。 –