序列化异常在继承自Catel Framework中的ModelBase的类中

时间:2015-09-07 11:16:32

标签: c# serialization catel

升级后的Catel(3.9-> 4.2)。在使用序列化/反序列化的深度副本的异常中的调试代码中,我发现如果类实现IEnumerable,我会捕获异常。 mscorlib.dll中的“System.Runtime.Serialization.SerializationException” VS2012 .NET4.5

[Serializable]
public class Test : ModelBase, IEnumerable<int>
{
    public int Count { get; set; }
    public string Name { get; set; }
    public List<int> List { get; set; }



    public Test()
    {
        List= new List<int>{25,63,59,88};
        Name = "tretret";
        Count = 89;
    }

     public Test(SerializationInfo info, StreamingContext context)
        : base(info, context)
     {
         MessageBox.Show("SerializationInfo");
     }


     public IEnumerator<int> GetEnumerator()
     {
         return List.GetEnumerator();
     }

     IEnumerator IEnumerable.GetEnumerator()
     {
         return GetEnumerator();
     }
}

我知道你想在序列化中使用IncludeInSerialization属性来包含prop。

DeepClone功能

      public static T DeepClone<T>(T source) where T : class
    {
        var stream = new MemoryStream();
        var formatter = new BinaryFormatter();
        formatter.Serialize(stream, source);
        stream.Position = 0;
        return (T)formatter.Deserialize(stream); // Exception here!!
    } 

呼叫者

var classTest = new Test();
var classTestClone = SimpleDeepClone.DeepClone(classTest);

0 个答案:

没有答案