2013-02-11 33 views
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?這甚至有可能嗎?

回答

1

如何實例化你的字典呢?

var OrigionalValues = new ExpressionDictionary<object,object>(); 
+0

上帝......是的,這將工作:D – Mark 2013-02-12 07:05:41

相關問題