首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过WCF发送System.Configuration.Configuration对象

如何通过WCF发送System.Configuration.Configuration对象
EN

Stack Overflow用户
提问于 2010-10-21 21:35:45
回答 3查看 508关注 0票数 0

嗯,我想标题本身就说明了一切。

我试图通过网络导出一个配置对象,但它看起来相当困难,这个类是不可序列化的,而且...它是密封的,所以这里没有遗产。

就像以前有人做过这样的事情吗?

问候

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-28 18:41:22

嗯,我想我找到了一个解决这个问题的好办法。它通过序列化部分来传递,而不是通过配置对象本身。因此,为了确保我需要的所有部分都被序列化/反序列化在一起,我将它们都包装在一个ConfigurationSectionGroup中。我完成了这项工作,并允许我通过WCF服务或直接在文件中导出和导入设置。下面是我使用的代码:

配置节基类:

代码语言:javascript
复制
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);
    }
}        

希望它能帮助一些人..。

问候

票数 0
EN

Stack Overflow用户

发布于 2010-10-21 21:45:47

您必须提取出您真正需要的部分,将它们放入一个单独的类中,该类可序列化,并具有用于WCF序列化的[DataContract][DataMember]属性,然后您需要在另一端执行相反的操作。

WCF只传输以XML格式序列化的数据。如果你不能按原样序列化你的数据,你需要自己解决它--没有什么灵丹妙药可以用另一种方式来解决这个问题……

为了减轻将大量属性从一个类复制到另一个类的痛苦,我建议使用像AutoMapper这样的库,它可以消除从一个对象分配到另一个对象的大量无聊、重复的代码。

票数 0
EN

Stack Overflow用户

发布于 2010-10-21 21:46:38

该类更像是访问应用程序配置文件的传递。序列化它实际上没有多大意义,但您可能想要做的是从其中提取值,并将它们填充到您控制的新类中。然后,您要做的就是确保新类是可序列化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3987994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档