У меня есть базовый класс, который сохраняет все значения свойства в словаре. но я хочу, чтобы значение свойства и значение в словаре имело значение сохранения. если значение свойства изменилось, измените значение словаря, а если измените значение в словаре, измените значение свойства. В конструкторе я использую отражение, но после завершения конструктор я хочу, чтобы не использовалось отражение из-за производительности.
Тип значения словаря следующий (в моем проекте он более сложный):
public class AgentProperty
{
public object Value;
public string Name;
public AgentProperty(string name, object value)
{
Value = value;
Name = name;
}
}
Базовый класс следующий:
public class BaseClass
{
private Dictionary<string,AgentProperty> Dictionary = new Dictionary<string, AgentProperty>();
public AgentProperty this[string key]
{
get { return (AgentProperty)Dictionary[key]; }
set { Dictionary[key] = value; }
}
public void Add(AgentProperty ap)
{
Dictionary.Add(ap.Name, ap);
}
public void SetDict(BaseClass o)
{
var objectType = o.GetType();
foreach (var property in objectType.GetProperties())
{
AgentProperty agentProperty = new AgentProperty(property.Name, property.GetValue(o));
Add(agentProperty);
}
}
}
Пример класса, унаследованного от BaseClass. Этот класс может иметь любой тип свойства.
public class TmpClass : BaseClass
{
public TmpClass(){
SetDict(this);
}
public string X { get; set; }
public int y { get; set; }
public string Z { get; set; }
public TimeSpan T { get; set; }
}
Есть ли способ сделать это?