如何将通用列表<MyClass>转换为 IList<System.Type>?



我正在尝试将包含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;
}

错误:给我一个错误,说无法将产品列表转换为系统列表。键入。

有人能给我一个解决这个问题的方法吗。提前谢谢!

好吧,让我们回顾一下您所写的内容:

  1. public IList<Type> GetProducts()基本上意味着您将返回Type对象的列表,但在方法体中,您基本上说return new List<Products>;,这显然不能做到,因为它与方法签名相矛盾。您可以选择return products.Select(x=>typeof(x)).ToList();,它将选择列表中对象的类型。

  2. 你为什么要那样做?您正在创建相同类型的列表,Products,返回的列表将包含所有相同的对象(产品类型)。

  3. 你能更具体一点吗?你想达到什么目的?

@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>

最新更新