Правильно ли я считаю, что для того, чтобы C # мог сериализовать объект, я ДОЛЖЕН иметь открытое свойство для каждого поля, для которого необходимо сохранить его состояние?
Если это так, разве это не очень плохо, так как оно ослабляет (если не нарушает полностью) любую инкапсуляцию, которую имеет мой класс?
В Java XStream может выполнять итерацию по каждому непереходному полю и архивировать его. В C # такого не может быть, и, что еще хуже, такие вещи, как словари, вообще не сериализуются. Это все немного беспорядок, нет?
Я видел DLL для "порта" XStream к .net, но нет никаких документов, и я с подозрением.