Я пытаюсь преобразовать «коллекцию коллекций» в более привлекательный XML. По сути, я хочу солгать потребителю услуг и сделать так, чтобы существовал настоящий объект.
Это то, что WCF создает автоматически
<EntityPropertyCollection xmlns="http://schemas.datacontract.org/2004/07/CustomSerializer" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<EntityProperty>
<Name>Test</Name>
<Value i:nil="true"/>
</EntityProperty>
<EntityProperty>
<Name>Test2</Name>
<Value i:type="EntityPropertyCollection">
<EntityProperty>
<Name>Nested1</Name>
<Value i:nil="true"/>
</EntityProperty>
<EntityProperty>
<Name>Nested2</Name>
<Value i:nil="true"/>
</EntityProperty>
</Value>
</EntityProperty>
</EntityPropertyCollection>
Это то, чего я хотел бы достичь
<Something>
<Test i:nil="true"/>
<Test2 i:type="Something">
<Nested1 i:nil="true"/>
<Nested2 i:nil="true"/>
</Test2>
</Something>
Будет полезен пользовательский сериализатор для определенного типа (EntityProperyCollection), но другие сообщения указывают, что это не вариант.
Я посмотрел на Суррогаты контрактов на данные. Я думаю, что мог бы сгенерировать пользовательский тип и позволить DataContractSerializer сериализовать сгенерированный тип. Но я надеюсь, что есть более простое решение.