反序列化时,数据库名称不起作用

问题描述 投票:1回答:1

我正在尝试使用[DataMember(name="")]反序列化CSV,其中CSV中的一个字段是类属性的不同名称。在csv中它是Url,在实体模型中它是DomainName

这是我的班级。

public class MozApiData
{
    private string _domainName;

    public decimal DA { get; set; }
    public decimal PA { get; set; }
    public decimal MozRank { get; set; }
    public int LinksIn { get; set; }
    public int Equity { get; set; }

    [PrimaryKey]
    [DataMember(Name = "Url")]
    public string DomainName
    {
        get
        {
            return _domainName;
        }
        set
        {
            _domainName = value.ToLower();
        }
    }

}

但是当我使用csv.FromCsv<List<MozApiData>>()时,DomainName属性为null。

我对数据属性做了什么错误?

如果我设置标题映射它可以工作,但想知道为什么数据注释不起作用。

servicestack
1个回答
2
投票

通常[DataMember]属性仅适用于[DataContract]类型,例如:

[DataContract]
public class MozApiData
{
    private string _domainName;
    [DataMember]
    public decimal DA { get; set; }
    [DataMember]
    public decimal PA { get; set; }
    [DataMember]
    public decimal MozRank { get; set; }
    [DataMember]
    public int LinksIn { get; set; }
    [DataMember]
    public int Equity { get; set; }

    [PrimaryKey]
    [DataMember(Name = "Url")]
    public string DomainName
    {
        get
        {
            return _domainName;
        }
        set
        {
            _domainName = value.ToLower();
        }
    }
}

但我刚刚添加了this commit的更改,它允许您使用[DataMember(Name = "Url")]而无需将其余类型转换为[DataContract]

此更改可从v5.2.1获得,现在是available on MyGet

© www.soinside.com 2019 - 2024. All rights reserved.