4
我正在研究一些代碼,它的最終目的是讓您使用屬性表達式來設置屬性的值,該屬性的語法類似於將變量傳遞爲out或ref參數。從屬性表達式獲取屬性的擁有對象
東西線沿線的:
public static foo(()=>Object.property, value);
而且Object.Property將被賦予價值的價值。
我用下面的代碼來獲取財產的owining對象:
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使用時,回饋的實例'對象'。我在使用屬性表達式方面有點新,而且似乎有許多不同的方法來完成工作,但我想擴展到目前爲止的所有內容,以便給出諸如()=> Foo.Bar.Baz之類的表達式會給酒吧,而不是Foo。我總是希望表達式中的最後一個包含對象。
任何想法?提前致謝。
對不起,我這些年以前錯過了!我會試試這個,但是這段代碼早已不復存在,但對我來說似乎很好。 – Brandorf