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;
        }

    } 

0 ответов

Другие вопросы по тегам