2014-01-07 11 views
0

Я использую Asp.net Web Api, и я пытаюсь вернуть список объектов DTO.Asp.net Web API Сериализующий список <>

Это то, что я есть:

// Wrapper 
[DataContract(Namespace = "", Name = "get-applications-result")] 
[XmlRoot(Namespace = "", ElementName = "get-applications-result")] 
public class GetApplicationsResult : List<ApplicationDTO> 
{ 

} 

// DTO object 
[DataContract(Namespace = "", Name = "application")] 
[XmlRoot(Namespace = "", ElementName = "application")] 
public class ApplicationDTO 
{ 
    [DataMember(Name = "application-name")] 
    [XmlElement(ElementName = "application-name")] 
    public string ApplicationName { get; set; } 
} 

В Global.asax я установить

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true; 

Однако, когда я возвращал ответ от сервера к клиенту, он возвращает его как это:

<get-applications-result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <ApplicationDTO> 
     <application-name>Application name</application-name> 
    </ApplicationDTO> 
</get-applications-result> 

Как я могу сделать <ApplicationDTO/> отображаемым как <application/>?

ответ

0

Попробуйте использовать XmlTypeAttribute на классе ApplicationDTO вместо XmlRootAttribute:

[DataContract(Namespace = "", Name = "application")] 
[XmlType(TypeName = "application")] 
public class ApplicationDTO 
{ 
    [DataMember(Name = "application-name")] 
    [XmlElement(ElementName = "application-name")] 
    public string ApplicationName { get; set; } 
}