2010-02-01 2 views
2

Как я представляю что-то вроде этого.NET Представляет XML в классе без XSD

<product> 
    <sku>12452</sku> 
    <attribute name="details">good stuff</attribute> 
    <attribute name="qty">5</attribute> 
</product> 

для использования в моей службе WCF? Не знаете, как определить несколько атрибутов, единственное отличие которых - «имя».

Мне нужно, чтобы это было правильно настроено как DataMember, поэтому xml получает десериализацию в нем.

Код будет что-то вроде:

[DataMember(Name = "sku")] 
public string sku; 

Что бы я использую для обоих атрибутов?

ответ

2

Вы не сможете сделать это с помощью DataContracts, поскольку сериализатор DataContract не поддерживает атрибуты XML (только элементы). Если вам действительно нужно генерировать сообщения с этой схемой, вместо этого вам нужно будет use XmlSerializer.

+0

Если DataContracts новее, почему бы им не поддерживать attrributes? Они устарели? –

+1

@Chris: DataContractSerializer не поддерживает атрибуты на узлах XML по соображениям производительности. Не поддерживая это, DCS примерно на 10-15% быстрее, чем XmlSerializer в том же документе. –