Znalazłem wiele rozwiązań tutaj w SO, a ponadto zajmowałem się głębokim klonowaniem obiektu poprzez szeregowanie/deserializację (do pamięci iz powrotem).Klonowanie obiektów bez szeregowania
Wymaga, aby klasy, które mają zostać sklonowane, zostały oznaczone jako [Serializable]
. Zdarza mi się, że moje klasy (a także większość z nich) są oznaczone [DataContract]
, ponieważ używam DataContractSerializer
do serializowania do XML.
Wprowadziłem tylko atrybut [Serializable]
, ponieważ potrzebuję głębokiego sklonowania niektórych z tych wystąpień klas. Jednak teraz coś stało się z serializacją/deserializacją za pośrednictwem DCS, ponieważ już nie działa - błędy związane z oczekiwaniem innego elementu XML na deserializację. Jeśli usuniemy [Serializable]
, błędy znikną.
Jakie są moje opcje? Po prostu chcę sklonować moje obiekty tak prosto, jak to tylko możliwe.
Można użyć odbicia, ale może to również spowodować niewielki wzrost wydajności. – IDWMaster
Dlaczego w ogóle potrzebujesz tutaj Serializable? Możesz użyć DCS dla głębokiego klonu ...? Po prostu serializować go do MemoryStream przez DCS ...? –
tak, właśnie wymyśliłem coś, opublikuję – mare