Dictionary的Own Add方法<;TKey、TValue>;其采用表达式<;Func<;T&g
本文关键字:lt gt Func 表达式 Own Add 方法 Dictionary TKey TValue | 更新日期: 2023-09-27 17:58:36
我正在尝试为Dictionary<TKey,TValue>
实现一个以Propert为参数的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作为字典的TKey存储为字符串。当Property是字符串类型时,这是有效的,但当我尝试添加DateTime属性和字符串Property时,它会挂起,因为它无法转换,这是清楚的。
我想实现的是,我不需要像那样硬编码字符串Name of the Property
OrigionalValues.Add("Title",value);
我如何设计我的Add Method或ExpressionDictionary类,我可以从我想要的每个属性类型调用Add Method,并且属性名称存储为TKey?这可能吗?
这样实例化字典怎么样?
var OrigionalValues = new ExpressionDictionary<object,object>();