在ASP.NET Web API响应中将属性渲染为XMLAttributes

时间:2013-01-11 17:24:37

标签: c# xml-serialization asp.net-web-api xmlserializer

以下是一个表示ASP.NET Web API服务调用响应的类。

public class User
{
   public string FirstName {get;set;}

   public long FirstNameLastModified {get;set;}

   public string LastName {get;set;}

   public long LastNameLastModified {get;set;}

}

我目前是XmlSerializer而不是默认的DataContractSerializer,原因与此问题无关。

此处呈现的响应属于表单形式。

最后修改的值是时间戳,与字段相关。

<User>
  <FirstName>Phill<FirstName>
  <FirstNameLastModified>12<FirstNameLastModified>
  <LastName>Haack<LastName>
  <LastNameLastModified>16<LastNameLastModified>
</User>

我希望将XML呈现为

<User>
  <FirstName lastModified="12">Phill<FirstName>
  <LastName lastModified="16">Haack<LastName>
</User>

我应该怎么做?

2 个答案:

答案 0 :(得分:3)

public class Foo<T>
{
    [XmlText]
    public T Value;
    [XmlAttribute]
    public int LastModified;
}

public class User
{
    public Foo<string> FirstName;
    public Foo<string> LastName;
}

答案 1 :(得分:2)

这样的事情:

public class User
{
    [XmlElement("FirstName")]
    public Name FirstName { get; set; }

    [XmlElement("LastName")]
    public Name LastName { get; set; }

}

public class Name
{
    [XmlText]
    public string Name { get; set; }

    [XmlAttribute("lastModified")]
    public long Modified { get; set; }
}