15

製品のデータ転送オブジェクトクラスがあります

public class ProductDTO
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}

Asp.netがオブジェクトをJSON(を使用してJSON.NET)またはでシリアル化すると、オブジェクトがXML生成されProductDTOます。

ただし、シリアル化中に名前をからに変更したいのですが、ProductDTOある種Productの属性を使用します。

[Name("Product")]
public class ProductDTO
{
    [Name("ProductId")]
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}

これどうやってするの?

4

2 に答える 2

18

クラス名がJSONでシリアル化されたデータになる理由はわかりませんが、XMLに関しては、DataContractAttribute、特にNameプロパティを介して型名を制御できるはずです。

using System.Runtime.Serialization;

[DataContract(Name = "Product")]
public class ProductDTO
{
    [DataMember(Name="ProductId")]
    public Guid Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    // Other properties
}

ASP.NET Web APIのデフォルトのXMLシリアライザーはDataContractSerializerであるため、DataContractAttributeが関連しています。DataContractSerializerは、シリアル化されたクラスに適用されるDataContractAttributeと、シリアル化されたクラスメンバーに適用されるDataMemberAttributeを介して構成されます。

于 2013-02-13T11:15:01.390 に答える
3

オプションは、これにデフォルトの.NetSerialization属性を使用することです。

[DataContract(Name = "Product")]
public class ProductDTO
{
    [DataMember(Name = "ProductId")]
    public Guid Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    // Other properties
}
于 2013-02-13T11:12:46.677 に答える