Рассмотрим приведенную ниже примерную программу
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) это невозможно, то какие бы ограничения были сделаны, и как бы это было реализовано?