Рассмотрим приведенную ниже примерную программу
var calendar = new Calendar
{
Id = 42,
CoffeeProvider = "Espresso2000",
Meetings = new[]
{
new Meeting
{
Location = "Room1",
From = DateTimeOffset.Parse("2014-01-01T00:00:00Z"),
To = DateTimeOffset.Parse("2014-01-01T01:00:00Z")
},
new Meeting
{
Location = "Room2",
From = DateTimeOffset.Parse("2014-01-01T02:00:00Z"),
To = DateTimeOffset.Parse("2014-01-01T03:00:00Z")
},
}
};
var patch = @"{
'coffeeprovider': null,
'meetings': [
{
'location': 'Room3',
'from': '2014-01-01T04:00:00Z',
'to': '2014-01-01T05:00:00Z'
}
]
}";
var patchedCalendar = Patch(calendar, patch);
Результат метода Patch() должен быть равен calendar, кроме как изменен на patch. Это значит; Id не изменится, CoffeeProvider будет установлен в null, а Meetings будет содержать один элемент, расположенный в Room3.
-
Как создать общий метод
Patch(), который будет работать для любой объект (а не только пример объекта Calendar), десериализуемый Json.NET? -
Если (1) это невозможно, то какие бы ограничения были сделаны, и как бы это было реализовано?