以下代码产生了问题:
我该如何解决这个问题?我做错了什么?无法隐式地将类型
'System.Collections.Generic.IEnumberable<DataField<string>>'
转换为 'DataFields'。存在显式转换(是否缺少强制转换?)。
public class DataFields : List<DataField>
{
}
public abstract class DataField
{
public string Name { get; set; }
}
public class DataField<T> : DataField
{
public T Value { get; set; }
}
public static DataFields ConvertXML(XMLDocument data) {
DataFields result = (from d in XDocument.Parse(data.OuterXML).Elements()
select new DataField<string>
{
Name = d.Name.ToString(),
Value = d.Value
}).ToList();
return result;
}
编辑:将以下信息移动到另一个问题中。
使用LINQ创建一个List<T>,其中T:someClass<U>
此外,我想在这个语句中做一些类似下面的事情,以便为每个值设置类型。我该如何实现呢?
select new DataField<[Attribute of element called type]>
{
Name = d.Name.ToString(),
Value = d.Value
}
ToList()
调用的结果中使用DataFields
?为什么它不会选择DataFields2
(DataFields
的子类)或DataFields3
(从List<DataField<string>>
派生的不相关类)? - Damien_The_Unbeliever