反序列化时数据成员名称不起作用
Datamember name not working when deserializing
我正在尝试使用 [DataMember(name="")]
反序列化 CSV,其中 CSV 中的一个字段与 class 属性 的名称不同。在 csv 中它是 Url
而在实体模型中它是 DomainName
.
这是我的class。
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
属性 为空。
我对数据属性做错了什么?
如果我设置一个 header 映射,它可以工作,但想知道为什么数据注释不起作用。
通常 [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]
。
此更改适用于现在 available on MyGet 的 v5.2.1。
我正在尝试使用 [DataMember(name="")]
反序列化 CSV,其中 CSV 中的一个字段与 class 属性 的名称不同。在 csv 中它是 Url
而在实体模型中它是 DomainName
.
这是我的class。
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
属性 为空。
我对数据属性做错了什么?
如果我设置一个 header 映射,它可以工作,但想知道为什么数据注释不起作用。
通常 [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]
。
此更改适用于现在 available on MyGet 的 v5.2.1。