首页 > 解决方案 > BinaryFormatter Serialize 在序列化期间排除 datatable.defaultview.sort 属性

问题描述

我有一个具有多个属性的类,类中的一些属性类型是datatable

我正在使用 BinaryFormatter 创建类的克隆副本,它工作正常,但是datatable.defaultview.sort设置了一些值并不能像克隆对象那样处理。这是一个示例代码

   public static void Main(string[] args)
    {
        TestCloneDatatable();
    }


    private static void TestCloneDatatable()
    {
        DataTable datatatable = new DataTable();
        datatatable.Columns.Add("ID", typeof(int));
        datatatable.Columns.Add("AddressLine1", typeof(string));

        for (int i = 0; i < 10; i++)
        {
            datatatable.Rows.Add(i, string.Concat("test ", i));
        }

        datatatable.DefaultView.Sort = "AddressLine1 ASC";

        Test test = new Test();
        test.ID = 1;
        test.Name = "my Name";
        test.Addresss = datatatable;


        Test testClone = test.Clone();

        string sort = testClone.Addresss.DefaultView.Sort; //here it is empty, I need "AddressLine1 ASC" should be there 

    }

    [SerializableAttribute]
    public class Test
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public DataTable Addresss { get; set; }


        public Test Clone()
        {

            Test result = DeepCopy<Test>(this);
            return result;
        }

        protected T DeepCopy<T>(T item)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new System.IO.MemoryStream();
            formatter.Serialize(stream, item);
            stream.Seek(0, SeekOrigin.Begin);
            T result = (T)formatter.Deserialize(stream);
            stream.Close();
            return result;
        }

    } 

标签: c#.netserializationbinary-serialization

解决方案


推荐阅读