1
我想實現一個Dictionary<TKey,TValue>
添加方法,它需要一個作爲參數。自己添加方法的字典<TKey,TValue>需要表達式<Func<T>>作爲參數
我多麼想發起詞典:
ExpressionDictionary<string,string> OrigionalValues = new ExpressionDictionary<string,string>();
而且我想在房產中的代碼添加一個項目,如:
public string Title
{
get { return _title; }
set
{
if (_title != value)
{
_title = value;
OrigionalValues.Add(() => Title,value);
}
}
}
我ExpressionDictionary類:
public class ExpressionDictionary<T,TValue> : Dictionary<string, TValue>
{
public void Add(Expression<Func<T>> property, TValue value)
{
var body = property.Body as MemberExpression;
if (body != null) Add(body.Member.Name, value);
}
}
因此,PropertName作爲字典的TKey存儲爲字符串。這在Property是字符串類型時有效,但當我嘗試添加DateTime屬性和字符串Property時,它會掛起,因爲它無法轉換,這很明顯。
我試圖才達到的是,我不需要硬編碼屬性的字符串名稱一樣
OrigionalValues.Add("Title",value);
我如何設計我的添加方法或ExpressionDictionary類,我可以調用從我想要的每個屬性類型添加方法,並將屬性名稱存儲爲TKey?這甚至有可能嗎?
上帝......是的,這將工作:D – Mark 2013-02-12 07:05:41