如何使用NetDataContractSerializer序列化从ConfigurationSection派生的类型

时间:2017-01-17 13:05:05

标签: c# serialization configuration netdatacontractserializer

我编写了我的类型派生自list.split('|')标记了所有属性ConfigurationSection和类DataMember,但程序崩溃说明我无法从未标记为{的类型继承我的类型{1}}。

那么如何将此序列化程序与DataContract一起使用?

DataContract

2 个答案:

答案 0 :(得分:2)

我想如果你不能将序列化程序与非数据契约类一起使用,那么你应该将数据成员属性分成另一个将在ConfigurationSection中聚合的类:

[DataContract]
public sealed class CustomConfig
{
   [DataMember]
    public int ConnectionTimeout {get;set;}
}

public sealed class MyConfig : ConfigurationSection
{
    private CustomConfig _customCfg = new  CustomConfig(){ConnectionTimeout = this.ConnectionTimeout};

    [ConfigurationProperty("ConnectionTimeout", DefaultValue = 1000)]
    public int ConnectionTimeout
    {
        get { return (int)this["ConnectionTimeout"]; }
        set { _customCfg.ConnectionTimeout = value;this["ConnectionTimeout"] = value; }
    }
    ... // other values
}

您可以使用序列化程序序列化CustomConfig实例

答案 1 :(得分:0)

还有另一种方法 - 不依赖于自动序列化,而是手动编写自定义序列化。由于.htaccess支持它,因此最终只能使用单个类型和另外两种方法(更确切地说:序列化的额外方法和反序列化的构造函数)。

例如,请参阅帖子:When using ISerializable with DataContractSerializer, how do I stop the serializer from outputting type information?