Given the following code,
[DataContract]
public class TestClass
{
[DataMember]
public object _TestVariable;
public TestClass(object value)
{
_TestVariable = value;
}
public void Save()
{
using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(new FileStream("test.tmp", FileMode.Create)))
{
DataContractSerializer ser = new DataContractSerializer(typeof(TestClass));
ser.WriteObject(writer, this);
}
}
}
public enum MyEnum
{
One,
Two,
Three
}
Why does it fail to serialize when _TestVariable
is set to an Enum value?
new TestClass(1).Save(); // Works
new TestClass("asdfqwer").Save(); // Works
new TestClass(DateTime.UtcNow).Save(); // Works
new TestClass(MyEnum.One).Save(); // Fails
The exception thrown is:
System.Runtime.Serialization.SerializationException : Type 'xxx.MyEnum' with data contract name 'xxx.MyEnum:http://schemas.datacontract.org/2004/07/Tests' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
object type
for _TestVariable, perhaps you could explain the real problem. – Jillene