1

我正在尝试实现一个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?这甚至可能吗?

4

1 回答 1

1

像这样实例化你的字典怎么样?

var OrigionalValues = new ExpressionDictionary<object,object>();
于 2013-02-11T16:00:53.577 回答