C# 如何转换通用列表<;MyClass>;到IList<;系统类型>;?
我正在尝试将包含产品的列表转换为类型列表,以返回到另一个方法。我的方法是这样的:C# 如何转换通用列表<;MyClass>;到IList<;系统类型>;?,c#,asp.net-mvc,list,generics,C#,Asp.net Mvc,List,Generics,我正在尝试将包含产品的列表转换为类型列表,以返回到另一个方法。我的方法是这样的: 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"},
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 GetProducts()
{
var products=新列表()
{
新产品{ID=“1”,Name=“Soap”,Price=“200”},
新产品{ID=“2”,Name=“trooser”,Price=“300”},
新产品{ID=“3”,Name=“Shirt”,Price=“400”}
}.ToList();
退货产品;
}
错误:给我一个错误,说明无法将产品列表转换为System.Type列表
有人能给我一个解决这个问题的方法吗。提前谢谢你 好吧,让我们回顾一下你写的内容:
public IList GetProducts()
基本上意味着返回一个Type对象的列表,但在方法体中基本上说是返回新列表代码>这显然是无法做到的,因为它与方法签名相矛盾。您可以返回产品代码>将选择列表中对象的类型
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;
}
public IList GetProducts()
{
var products=新列表()
{
新产品{ID=“1”,Name=“Soap”,Price=“200”},
新产品{ID=“2”,Name=“trooser”,Price=“300”},
新产品{ID=“3”,Name=“Shirt”,Price=“400”}
}.ToList();
退货产品;
}
返回类型应该是
IList
,而不是IList
一点由@ice jovanoski编写的答案的中间版本。它使用“产品。选择(x=>x.GetType()).ToList()”
公共静态IList GetProducts()
{
var products=新列表()
{
新产品{ID=“1”,Name=“Soap”,Price=“200”},
新产品{ID=“2”,Name=“trooser”,Price=“300”},
新产品{ID=“3”,Name=“Shirt”,Price=“400”}
}.ToList();
返回产品。选择(x=>x.GetType()).ToList();
}
产品
是对象
的后代,而不是类型
。是的,但我必须返回一个T类型列表。您也可以返回:新列表{typeof(Products)},因为它是列表中唯一可用的类型。#Uno,我也尝试了您的方法,并给出了相同的错误-“Products是一个变量,但像类型一样使用”问题:在您的IList
中,您是否在项目中的其他地方定义了Type
?例如MyNamespace.Type
?或者您希望调用返回一个System.Type
列表吗?这里我只想将一个T类型列表a发送给另一个方法。与我在示例中使用产品的方式相同,我还有其他类,我也需要使用它们。products.Select(x=>typeof(x)).ToList()代码>你可以这样做,并得到任何对象列表的类型列表。这对我不起作用。我试过了。给我一个错误。“产品是一个变量,但像类型一样使用”试试这个。。返回产品。选择(x=>x.GetType()).ToList();谢谢你的指导。可以:)不,我必须返回一个T类型列表。这是一个要求。您不必在GetProducts中执行.ToList()两次。在返回语句中只做一次就足够了。@Dayan你真的不清楚为什么需要这个。调用代码将如何处理列表{typeof(Product)、typeof(Product)、typeof(Product)}
?
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();
}