我正在尝试使用[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。
我对数据属性有何疑问?
如果我设置了标题映射,它可以工作,但想知道为什么数据注释不起作用。
答案 0 :(得分: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)可用。