C#具有相同引用的两个对象

时间:2019-03-18 13:59:49

标签: c# dictionary object reference

我有将所有属性值保存在Dictionary中的基类。但是我想属性值和字典中的值具有保存价值。如果属性值更改,则更改字典值;如果dictionary中的值更改,则更改属性值。在构造函数中,我使用反射,但是在完成构造函数后,由于性能我不想使用反射。

以下是字典值的类型(在我的项目中更复杂):

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

有什么办法吗?

0 个答案:

没有答案