我正在尝试将包含Products的List转换为List of Type以返回到另一个方法。这就是我的方法:
public IList<Type> GetProducts()
{
var products = new List<Products>()
{
new Products { ID="1",Name="Soap",Price="200"},
new Products { ID="2",Name="Trouser",Price="300"},
new Products { ID="3",Name="Shirt",Price="400"}
}.ToList();
return products;
}
错误:给我一个错误,说无法将产品列表转换为系统列表。键入。
有人能给我一个解决这个问题的方法吗。提前谢谢!
好吧,让我们回顾一下您所写的内容:
-
public IList<Type> GetProducts()
基本上意味着您将返回Type对象的列表,但在方法体中,您基本上说return new List<Products>;
,这显然不能做到,因为它与方法签名相矛盾。您可以选择return products.Select(x=>typeof(x)).ToList();
,它将选择列表中对象的类型。 -
你为什么要那样做?您正在创建相同类型的列表,Products,返回的列表将包含所有相同的对象(产品类型)。
-
你能更具体一点吗?你想达到什么目的?
@ice jovanoski的一个有点夸张的答案版本。它使用"产品。Select(x=>x.GetType()).ToList()"
public static IList<Type> GetProducts()
{
var products = new List<Products>()
{
new Products { ID="1",Name="Soap",Price="200"},
new Products { ID="2",Name="Trouser",Price="300"},
new Products { ID="3",Name="Shirt",Price="400"}
}.ToList();
return products.Select(x => x.GetType()).ToList();
}
试试这个:
public IList<Products> GetProducts()
{
var products = new List<Products>()
{
new Products { ID="1",Name="Soap",Price="200"},
new Products { ID="2",Name="Trouser",Price="300"},
new Products { ID="3",Name="Shirt",Price="400"}
}.ToList();
return products;
}
返回类型应为IList<Products>
,而不是IList<System.Type>
。