У меня есть задача, в которой мне предоставлен базовый объект, который содержит объекты и примитивы из нашей службы данных, и соединить его с данными, предоставленными для идентичного объекта, который предоставляет клиент. Это должно закончиться тем, чтобы быть одним законченным объектом. Я буду ссылаться на объект как «MyObject».
Вот как выглядит объект из службы данных:
MyObject.FirstName = null
MyObject.LastName = null
MyObject.DataProperty1 = anotherobject
anotherobject.property1 = somevalue1
anotherobject.property2 = somevalue2
anotherobject.property2 = somevalue2
MyObject.DataProperty2 = yetanotherobject
yetanotherobject.property1 = someothervalue1
yetanotherobject.property2 = someothervalue2
yetanotherobject.property3 = someothervalue3
yetanotherobject.property4 = someothervalue4
Вот как выглядит объект, когда он предоставляется клиентской стороной
MyObject.FirstName = John
MyObject.LastName = Doe
MyObject.DataProperty1 = anotherobject
anotherobject.property1 = null
anotherobject.property2 = null
anotherobject.property2 = null
MyObject.DataProperty2 = yetanotherobject
yetanotherobject.property1 = null
yetanotherobject.property2 = null
yetanotherobject.property3 = null
yetanotherobject.property4 = null
Я не могу ожидать, чтобы точно знать, какие объекты подэлементов будут нулевыми или нет, но я знаю, что рекурсивно, мне нужен окончательный объединенный объект, который будет содержать фактические данные из обоих исходных объектов, а не нули. Очевидно, что объекты будут намного сложнее, чем то, что я напечатал выше, но суть моего вопроса верна.
Я пытался сделать что-то вроде слияния двух объектов в C # Я не мог понять не примитивы.
Я действительно не думаю, что это задача для AutoMapper, поскольку тип MyObject - это один и тот же класс как для клиента, так и для стороны данных. Не имеет смысла сопоставлять его с собой.
Жаль, я не могу просто пойти
MyObject1 + MyObject2 = NewCombinedObject, ха-ха.
Кроме того, это унаследованный код, и я понимаю, что это вовсе не «лучшая практика». Тем не менее, нужно решить проблему.