I wrote my type derived from ConfigurationSection tagged all properties with DataMember and class with DataContract, however program crashes stating I cannot inherit my type from a type that is not marked with DataContract.
So how could I use this serializer with ConfigurationSection?
[DataContract]
public sealed class MyConfig : ConfigurationSection
{
[DataMember]
[ConfigurationProperty("ConnectionTimeout", DefaultValue = 1000)]
public int ConnectionTimeout
{
get { return (int)this["ConnectionTimeout"]; }
set { this["ConnectionTimeout"] = value; }
}
... // other values
}
There is another way -- instead of relying on automatic serialization, write your custom serialization manually. Since
NetDataContractSerializersupports it, you can end up with just single type with 2 additional methods (more precisely: extra method for serializing and constructor for deserializing).As for example see the post: When using ISerializable with DataContractSerializer, how do I stop the serializer from outputting type information?