title: C# DataContractSerializer SerializationException with Enum set in object field
body: <p>Given the following code,</p>
  
  <pre><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
  }
  </code></pre>
  
  <p>Why does it fail to serialize when <code>_TestVariable</code> is set to an Enum value?</p>
  
  <pre><code>new TestClass(1).Save(); // Works
  new TestClass("asdfqwer").Save(); // Works
  new TestClass(DateTime.UtcNow).Save(); // Works
  new TestClass(MyEnum.One).Save(); // Fails
  </code></pre>
  
  <p>The exception thrown is:</p>
  
  <pre><code>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.
  </code></pre>