Глубокое копирование объекта путем сериализации в JSON и немедленной десериализации - PullRequest
0 голосов
/ 25 мая 2018

Может ли сериализация объекта в JSON и немедленная десериализация его обратно в исходный тип объекта быть допустимым способом глубокого копирования объекта.

Я в основном спрашиваю языки типа C # и Java, но будет ли эторазличаются для разных языков?

Есть ли какие-либо проблемы, которые могут возникнуть при этом?

1 Ответ

0 голосов
/ 25 мая 2018

Кажется логичным, но может быть немного неэффективно.Я полагаю, что рассматриваемый объект - просто простое poco.

Вы также можете использовать отражение, чтобы сделать это.

Этот код будет копировать свойства объекта и возвращать экземпляр новой копии.

public TTranslateTo TranslateTo<TTranslateTo>()
{
    var target = Activator.CreateInstance<TTranslateTo>();

    foreach (var p1 in GetObjectTypeProperties)
    {
        var p2 =
            target.GetType()
                .GetProperties()
                .FirstOrDefault(p => string.Equals(p.Name, p1.Name, StringComparison.CurrentCultureIgnoreCase) && p.PropertyType == p1.PropertyType);

        p2?.SetValue(target, p1.GetValue(this));
    }

    return target;
}

private IEnumerable<PropertyInfo> GetObjectTypeProperties => GetType()
    .GetProperties();

Вы можете включить этот код в базовый класс, предоставляя вам доступ к функциям копирования всех объектов..

...