嗯,我觉得这个标题解释不了。
我正在尝试通过电线导出配置对象,但它看起来很困难,类不可序列化......它是密封的,所以这里没有遗产。
任何人之前都做过这样的事情吗?
此致
答案 0 :(得分:0)
你必须把你真正需要的部分拿出来,把它们放到一个可序列化的单独的类中,并且具有[DataContract]
和[DataMember]
属性用于WCF序列化,然后你需要做反向在另一端。
WCF仅传输数据 - 以XML格式序列化。如果你不能按原样序列化你的数据,你需要自己解决这个问题 - 没有灵丹妙药可以用另一种方式来解决......
为了减轻将大量属性从一个类复制到另一个类的痛苦,我建议使用像AutoMapper这样的库来消除很多无聊的重复代码,从一个对象分配给另一个对象。< / p>
答案 1 :(得分:0)
该类更像是访问应用程序配置文件的传递方式。序列化它并没有多大意义,但您可能想要做的是将值从中拉出并将它们填充到您控制的新类中。然后你要做的就是确保新类是可序列化的。
答案 2 :(得分:0)
我觉得我找到了解决这个问题的好方法。它通过序列化部分而不是Configuration对象本身来传递。 因此,为了确保我需要的所有部分一起进行序列化/反序列化,我将它们全部包装在一个ConfigurationSectionGroup中。我完成了这项工作,并允许我通过WCF服务或直接在文件中导出和导入设置。 这是我使用的代码:
配置部分基类:
public abstract class ConfigurationSectionBase : ConfigurationSection
{
public string Serialize()
{
return SerializeSection(null, Name, ConfigurationSaveMode.Minimal);
}
public void Deserialize(string configuration)
{
XmlReader reader = XmlReader.Create(new StringReader(configuration));
if (!reader.ReadToFollowing(Name)) return;
StringBuilder stringBuilder = new StringBuilder().Append(reader.ReadOuterXml());
var stringReader = new StringReader(stringBuilder.ToString());
reader = XmlReader.Create(stringReader);
DeserializeSection(reader);
}
}
希望它有所帮助...
此致