【发布时间】:2011-11-18 10:52:47
【问题描述】:
以下代码产生问题
无法将类型
'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;
}
已编辑:将以下信息移至另一个问题。
Using LINQ to create a List<T> where T : someClass<U>
此外,我希望能够在此语句中执行以下操作,以便为每个设置值的类型。我怎样才能做到这一点。
select new DataField<[Attribute of element called type]>
{
Name = d.Name.ToString(),
Value = d.Value
}
【问题讨论】:
-
编译器如何或为什么知道使用
DataFields作为ToList()调用的结果?为什么不选择DataFields2(DataFields的子类)或DataFields3(派生自List<DataField<string>>的不相关类)? -
致所有人。好吧,显然我没有想到这一点,但它似乎应该是可能的。也许是不同的方法?我在这里不知所措,只是在寻找一些想法
标签: c# list generics linq-to-xml