正在更新整理对象中的词典

本文关键字:对象 更新 | 更新日期: 2023-09-27 18:27:19

我在更新作为MarshallByRef对象属性的字典时遇到问题。我的编组对象是一个配置对象,它有一些基本的数据类型和前面提到的字典。它在一个AppDomain上创建,并作为接口传递给另一个AppDomain。

public clas FFIConfiguration : MarshalByRefObject, IUserConfig
{
    public string UserName {get;set;}
    public DateTime ExecutionTime {get;set;}
    public Dictionary<String, String> ParametersDict { get; set; }
}

这个对象被传递到另一个Appdomain,在那里它被用作这样的接口:

IUserConfig config = parameterPassedAsMarshalled;
config.ExecutionTime = DateTime.Now;
config.ParametersDict.Add("Key",Value");
config.ParametersDict["Key"] = "Some other value";

当我尝试设置int、string或datetime属性中的任何一个时,它都起到了魅力的作用。但当我在字典中添加任何内容时,它都保持不变。

我可以序列化字典并将其存储为字符串,然后再进行反序列化,但我确实希望避免这种情况。这个问题还有其他解决办法吗?

正在更新整理对象中的词典

多亏了leppie的提示,我终于成功了。

原来的类现在有一个设置字典的方法:

public clas FFIConfiguration : MarshalByRefObject, IUserConfig
{
    public string UserName {get;set;}
    public DateTime ExecutionTime {get;set;}
    public Dictionary<String, String> ParametersDict { get; set; }
    public void SetToDictionary(string key, string value)
    {
        if (ParametersDict.ContainsKey(key))
            ParametersDict[key] = value;
        else
            ParametersDict.Add(key, value);
    }
}

通过这种方式,字典是在原始的AppDomain上设置的,它可以按预期工作。