我正在尝试使用[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。
我对数据属性做了什么错误?
如果我设置标题映射它可以工作,但想知道为什么数据注释不起作用。
通常[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。