プロパティ式を使用して、変数を out または ref パラメーターとして渡すのと同様の構文でプロパティの値を設定できるようにするという最終目的を持つコードを少し作成しています。
次のようなもの:
public static foo(()=>Object.property, value);
また、Object.Property には value の値が割り当てられます。
次のコードを使用して、プロパティの所有オブジェクトを取得しています。
public static object GetOwningObject<T>(this Expression<Func<T>> @this)
{
var memberExpression = @this.Body as MemberExpression;
if (memberExpression != null)
{
var fieldExpression = memberExpression.Expression as MemberExpression;
if (fieldExpression != null)
{
var constExpression = fieldExpression.Expression as ConstantExpression;
var field = fieldExpression.Member as FieldInfo;
if (constExpression != null) if (field != null) return field.GetValue(constExpression.Value);
}
}
return null;
}
したがって、これを ()=>Object.Property のようなプロパティ式で使用すると、'Object' のインスタンスが返されます。私はプロパティ式の使用に少し慣れていません。物事を達成するにはさまざまな方法があるようですが、これまでのものを拡張したいので、 ()=>Foo.Bar.Baz などの式が与えられますFoo ではなく Bar を返します。私は常に式の最後の包含オブジェクトが必要です。
何か案は?前もって感謝します。