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