我在更新字典时遇到问题,该字典是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属性时,它可以作为魅力。但是当我在字典中添加任何内容时,它仍保持不变。
我可以序列化字典并将其存储为字符串,然后将其反序列化,但我真的想避免这种情况。这个问题还有其他解决办法吗?
答案 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);
}
}
这种方式字典在原始AppDomain上设置,并按预期工作。