我正在尝试为Dictionary<TKey,TValue>
实现一个Add属性作为参数。
我想如何发起词典:
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作为字符串存储为Dictionary的TKey。当属性是字符串的类型时,这可以工作,但是当我尝试添加DateTime属性和字符串属性时,它会挂起,因为它无法转换,这是明确的。
我想要实现的是,我不需要对字符串名称进行硬编码,如
OrigionalValues.Add("Title",value);
如何设计我的Add方法或ExpressionDictionary类,我可以从我想要的每个Property类型调用Add方法,并将Property Name存储为TKey?这甚至可能吗?
答案 0 :(得分:1)
如何像这样实例化你的字典呢?
var OrigionalValues = new ExpressionDictionary<object,object>();