更新编组对象中的字典

时间:2015-12-17 13:32:15

标签: c# reflection

我在更新字典时遇到问题,该字典是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属性时,它可以作为魅力。但是当我在字典中添加任何内容时,它仍保持不变。

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

1 个答案:

答案 0 :(得分:0)

感谢来自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);
    }
}

这种方式字典在原始A​​ppDomain上设置,并按预期工作。