.net 如何通过WCF发送System.Configuration.Configuration对象
嗯,我想这个标题本身就可以解释 我试图通过连线导出一个配置对象,但是看起来很困难,这个类是不可序列化的,而且。。。它是密封的,所以这里没有遗产 就像以前有人做过这样的事一样.net 如何通过WCF发送System.Configuration.Configuration对象,.net,wcf,serialization,system.configuration,.net,Wcf,Serialization,System.configuration,嗯,我想这个标题本身就可以解释 我试图通过连线导出一个配置对象,但是看起来很困难,这个类是不可序列化的,而且。。。它是密封的,所以这里没有遗产 就像以前有人做过这样的事一样 关于您必须提取出真正需要的位,将它们放入一个单独的类中,该类是可序列化的,并且具有用于WCF序列化的[DataContract]和[DataMember]属性,然后您需要在另一端执行相反的操作 WCF只传输以XML格式序列化的数据。如果您不能按原样序列化数据,您需要自己解决它-没有其他方法可以解决这个问题 为了减轻将大量属性
关于您必须提取出真正需要的位,将它们放入一个单独的类中,该类是可序列化的,并且具有用于WCF序列化的[DataContract]和[DataMember]属性,然后您需要在另一端执行相反的操作 WCF只传输以XML格式序列化的数据。如果您不能按原样序列化数据,您需要自己解决它-没有其他方法可以解决这个问题
为了减轻将大量属性从一个类复制到另一个类的痛苦,我建议使用这样的库可以消除从一个对象分配到另一个对象的大量枯燥、重复的代码。该类更像是访问应用程序配置文件的通道。序列化它并没有多大意义,但您可能想做的是从中提取值,并将它们填充到您控制的新类中。然后,您所要做的就是确保新类是可序列化的。我想我找到了解决这个问题的好方法。它通过序列化节而不是配置对象本身来传递。 因此,为了确保我需要的所有部分都被序列化/反序列化在一起,我将它们都包装在一个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);
}
}
希望它能帮助别人
关于我试图避免再次创建所有对象。甚至使用一个工具。首先,我将尝试序列化这些部分。如果它不起作用。然后我会说…我很好奇为什么你会想这样做,因为配置是特定于应用程序的。我正在开发一个客户机-服务器解决方案,客户机作为GUI来构建服务器配置。还需要将某些配置部分导出到另一台机器。