升级后的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);