嗯,我想标题本身就说明了一切。
我试图通过网络导出一个配置对象,但它看起来相当困难,这个类是不可序列化的,而且...它是密封的,所以这里没有遗产。
就像以前有人做过这样的事情吗?
问候
发布于 2010-10-28 18:41:22
嗯,我想我找到了一个解决这个问题的好办法。它通过序列化部分来传递,而不是通过配置对象本身。因此,为了确保我需要的所有部分都被序列化/反序列化在一起,我将它们都包装在一个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);
}
} 希望它能帮助一些人..。
问候
发布于 2010-10-21 21:45:47
您必须提取出您真正需要的部分,将它们放入一个单独的类中,该类可序列化,并具有用于WCF序列化的[DataContract]和[DataMember]属性,然后您需要在另一端执行相反的操作。
WCF只传输以XML格式序列化的数据。如果你不能按原样序列化你的数据,你需要自己解决它--没有什么灵丹妙药可以用另一种方式来解决这个问题……
为了减轻将大量属性从一个类复制到另一个类的痛苦,我建议使用像AutoMapper这样的库,它可以消除从一个对象分配到另一个对象的大量无聊、重复的代码。
发布于 2010-10-21 21:46:38
该类更像是访问应用程序配置文件的传递。序列化它实际上没有多大意义,但您可能想要做的是从其中提取值,并将它们填充到您控制的新类中。然后,您要做的就是确保新类是可序列化的。
https://stackoverflow.com/questions/3987994
复制相似问题