Вы можете изменить ссылки (или, точнее, переменные, которые их содержат), если они передаются по ссылке:
class Foo {
...
public static void Save(ref Foo obj)
{
var newObj = obj._save() //your implementation
obj = newObj;
}
}
Нет другого способа изменить ссылки. Причина в том, что объекты не знают, где на них ссылаются. Объект Foo не знает ни о каких ссылках на него.
Если вам нужно точное поведение, которое вы обрисовали в своем коде, единственный способ добиться этого - изменить содержимое вашего экземпляра Foo, т. Е. Перезаписать каждое поле обновленными значениями.
Надеюсь, это поможет.