Проблема, которую нужно решить
Я хочу иметь возможность обновить свойство prop
, используя фиктивный метод Update
.Для этого я хотел бы вызвать метод следующим образом:
Root obj = /* ... */;
Update(obj, "sub/sub/prop", "foobar");
Как бы я, например.построить какое-то дерево выражений для этого?
Сценарий
class Sub2
{
public string prop { get; set; }
}
class Sub1
{
public Sub2 sub { get; set; }
}
class Root
{
public Sub1 sub { get; set; }
}
class Main
{
//...
void Update(object obj, string navigation, object newval) { /* magic */ }
}
Полная проблема
Мне нужно иметь возможность сериализовать отдельные поля из некоторого объекта (уже решено, глава метода)public void Serialize<TProperty>(T obj, Stream s, Expression<Func<T, TProperty>> exp)
) и обновите соответствующее поле в приложении сервера.Только это поле может быть обновлено, некоторые классы вложены слишком глубоко, чтобы позволить такие решения, как «просто использовать некоторые идентификаторы и переключатель, чтобы затем поместить значение в правильное поле», именно поэтому этот подход был выбран.