0

好吧,我认为标题本身就可以解释。

我正在尝试通过电线导出配置对象,但它看起来很困难,该类不可序列化并且......它是密封的,所以这里没有遗产。

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

问候

4

3 回答 3

0

Well I think I found a good solution for this issue. It passes by serializing the sections instead of the Configuration object itself. So, to ensure all the sections I need get Serialized/Deserialized together I've wrapped them all in one ConfigurationSectionGroup. I does the job, and allows me to export and import settings trough a WCF service, or directly on file. Here's the code I used:

A configuration section base class:

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);
    }
}        

Hope it helps someone...

Regards

于 2010-10-28T10:41:22.197 回答
0

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

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

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

于 2010-10-21T13:45:46.703 回答
0

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

于 2010-10-21T13:46:38.187 回答