Я пытаюсь реализовать метод добавления для Dictionary<TKey,TValue>
, который берет значение как параметр.Свой метод добавления для словаря <TKey,TValue>, который принимает выражение <Func<T>> как параметр
Как я хочу, чтобы инициировать словарь:
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 словаря в виде строки. Это работает, когда свойство является типом строки, но когда я пытаюсь добавить свойство DateTime и строку Property, оно зависает, потому что оно не может преобразовать, что ясно.
То, что я пытаюсь для того чтобы достигнуть в том, что мне не нужно жестко строковое имя свойства как
OrigionalValues.Add("Title",value);
Как я могу разработать свой метод Add или ExpressionDictionary класс, который я могу назвать Добавить метод из каждого типа свойства, который я хочу, и имя свойства хранится как TKey? Возможно ли это?
Бог .. да, это сработает: D – Mark