Я был довольно смущен одним моментом при разработке DataContracts для сериализации.
Скажем, у меня есть объект (например, клиент), и он предоставляет свойство коллекции (например, AddressCollection с именем Addresses). Руководящие принципы разработки инфраструктуры требуют, чтобы я не предоставлял открытый мутатор для свойства, т. Е. Свойство коллекции должно иметь метод get и no set, а вместо этого - метод открытого набора (public void SetAddresses (IEnumerable
address)).
Но если я хочу сериализовать этот объект и ожидаю, что буду в среде с частичным доверием, могу ли я иметь , чтобы добавить открытый установщик в свойство, чтобы его можно было правильно десериализовать?
Кроме того, если при сериализации в коллекции ничего нет, а конструктор по умолчанию не вызывается DataContractSerializer, я почти уверен, что коллекция вообще не установлена и оставлена как нулевая. Я мог бы использовать атрибут OnSerializing для инициализации коллекции, но тогда этот метод также должен быть публичным в сценарии частичного доверия, не так ли? И это еще страшнее.
Кто-нибудь знает соответствующее руководство здесь?
Большое спасибо.