正在更新整理对象中的词典
本文关键字:对象 更新 | 更新日期: 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上设置的,它可以按预期工作。