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?这可能吗?

Dictionary的Own Add方法<;TKey、TValue>;其采用表达式<;Func<;T&g

这样实例化字典怎么样?

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