Вероятно, это не обязательно. Я не нахожу никакой логики для контроля. Поскольку Group, Array и control - все методы get из AbstractControl, именно поэтому метод get появился в элементе управления.
Вы не можете - просто и понятно. Атрибут необходим DataContractSerializer для выбора элементов для сериализации. В контракте с XmlSerializer, который в основном просто сериализует все (если вы явно не указываете его игнорировать), DataContractSerializer является «opt-in» - вы должны явно указать ему (посредством атрибутов), какие поля и / или свойства чтобы сериализовать.
ОБНОВЛЕНИЕ: Как отметили несколько человек, в .NET 3.5 SP1 Microsoft немного ослабила эти правила - любое общедоступное свойство чтения / записи будет автоматически сериализовано DataContractSerializer. В то же время ваш класс также должен иметь конструктор по умолчанию без параметров - звучит как точные требования, которые мы предъявляли к XmlSerializer, когда ....
Конечно, это:
. Я все еще думаю, что эти вещи должны быть явными и ясными, поэтому использование тех, которые больше не требуются, открывает путь для ленивых. / небрежное программирование - мне это не нравится. Но если вы хотите, вы можете использовать его сейчас без явной пометки ваших свойств с помощью [DataMember] .....
Marc
t позволяет вам указать определенный выбранный порядок параметров - он будет просто использовать их в том порядке, в котором они появляются в классеЯ все еще думаю, что они вещь должна быть ясной и понятной, поэтому необходимость в тех, кто больше не нужен, открывает путь для ленивого / небрежного программирования - мне это не нравится. Но если вы хотите, вы можете использовать его сейчас без явной пометки ваших свойств с помощью [DataMember] .....
Marc
t позволяет вам указать определенный выбранный порядок параметров - он будет просто использовать их в том порядке, в котором они появляются в классеЯ все еще думаю, что они вещь должна быть ясной и понятной, поэтому необходимость в тех, кто больше не нужен, открывает путь для ленивого / небрежного программирования - мне это не нравится. Но если вы хотите, вы можете использовать его сейчас без явной пометки ваших свойств с помощью [DataMember] .....
Marc
Это немного больше работы, чем добавление атрибутов, но это работает.
Просто отметьте класс атрибутом [Serializable]. Любые члены, для которых вы не хотите сериализовать, пометьте [NonSerialized]. Обратите внимание, что [Serializable] вызывает сериализацию всех полей по умолчанию, тогда как [DataContract] по умолчанию не сериализует никаких полей, кроме отмеченных [DataMember].