我正在爲我的應用程序編寫一個文件通用塊,並開始使用Lambda表達式來管理我的規則集以生成塊,以避免魔法字符串,配置地獄等陷阱。用lambda表達式讀取屬性值
在我的映射類我有類似線路:
Map(x => x.Name).Length(20).PadLeft(true).PaddingChar("#");
能正常工作,而不是在我的居住問題,在這裏我設置救了我的關於表達的信息是在地圖的方法:
public override IPropertyMap Map(Expression<Func<T, object>> expression)
{
var propertyMap = new FixedLengthPropertyMap
{
//Length = 20,
//PaddingCharacter = " ",
PadLeft = false,
PropertyInfo = ReflectionHelper.GetProperty(expression)
};
_properties.Add(propertyMap);
return propertyMap;
}
_properties
只是一個List<IPropertyMap>
存儲我的信息,其中從什麼是有一個真正的對象的數據可以從屬性讀過的最好的方式,我的問題目前我想出了一些與此類似:
var map = new AgentMap();
var agent = new Agent {Name = "Bob"};
string output = map.Write(agent);
public override string Write<T>(T agent)
{
var initial = _properties[0];
return initial.PropertyInfo.GetValue(agent, null) as string;
}
是有一種比使用GetValue方法更好的方法,因爲之前我使用表達式樹?
-1我很害怕看到你的反射幫手。 – asyncwait 2009-08-18 14:49:27