我正在尝试实现一个Dictionary<TKey,TValue>将属性作为参数的添加方法。
我想如何启动字典:
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 类,我可以从我想要的每个属性类型中调用 Add 方法,并且属性名称存储为 TKey?这甚至可能吗?