1

プロパティの set 関数へのデリゲートを取得したいと思います。これは私が今日行う方法です:

var property = typeof(IApplicationState).GetProperty(propertyName);
var action = (Action<IApplicationState, T>)Delegate.CreateDelegate(typeof(Action<IApplicationState, T>), null, property.GetSetMethod());

これは機能しますが、プロパティの名前を知っています。

名前を使わずにこれを行うことはできますか?このようなもの:

var action = (Action<IApplicationState, T>)Delegate.CreateDelegate(typeof(Action<IApplicationState, T>), null, IApplicationState.PROPERTY.GetSetMethod());
4

1 に答える 1

4

追加のホップを導入する (ただし、パフォーマンスへの影響はおそらく無視できる) 1 つの単純なオプションは、ラムダ式を使用することです。

Action<IApplicationState, T> action = (state, value) => state.Foo = value;

現在、型を参照できるのと同じ方法でコンパイル時にプロパティを参照する方法はありませんがtypeof、C# チームの機能要求リストにはあります。

編集:これがジェネリックメソッド(の型パラメーターを持つ)にある場合、おそらく型(またはおそらく)でなければならTないので、これを直接使用できるかどうかはまったくわかりません。あなたが達成しようとしていることの文脈がなければ、私たちはその側面を本当に助けることはできません.state.FooTobject

于 2013-10-10T10:01:03.960 に答える