C # два объекта с одинаковыми ссылками - PullRequest
0 голосов
/ 18 марта 2019

У меня есть базовый класс, который сохраняет все значения свойства в словаре. но я хочу, чтобы значение свойства и значение в словаре имело значение сохранения. если значение свойства изменилось, измените значение словаря, а если измените значение в словаре, измените значение свойства. В конструкторе я использую отражение, но после завершения конструктор я хочу, чтобы не использовалось отражение из-за производительности.

Тип значения словаря следующий (в моем проекте он более сложный):

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; }
}

Есть ли способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...