无法隐式转换类型';System.Collections.Generic.IEnumerable<;匿名类型#

本文关键字:类型 IEnumerable Generic lt Collections System 转换 | 更新日期: 2023-09-27 18:01:15

我已经定义了自己的模型类MyModel.Customer

我在使用<T>而不是直接Model类的方法中遇到了转换问题。

public IEnumerable<T> MyMethod<T>() where T : class
        {
            // my method code
        }

获取运行时错误:

base=(14,8(:错误CS0266:无法隐式转换类型'System.Collections.Generic.IEnumerable<MyModel.Customer>''System.Collections.Generic.IEnumerable<T>'。显式转换存在(你错过了一个演员阵容吗?(

为什么会这样?有线索吗?

无法隐式转换类型';System.Collections.Generic.IEnumerable<;匿名类型#

你想这样做吗:

public static IEnumerable<T> MyMethod<T>() where T : class
{
    // my method code   
    List<Customer> customers = new List<Customer>()
       {
            new Customer(), new Customer(), new Customer()
       };
    return customers;
}

这样不行。。。

您应该显式强制转换集合中的每个元素。

public static IEnumerable<T> MyMethod<T>() where T : class 
{
    List<T> resultList = new List<T>();   
    List<Customer> customers = new List<Customer>()
       {
            new Customer(), new Customer(), new Customer()
       };
    for(int i = 0; i < customer.Count; i++)
       resultList.Add(customers[i] as T);  // attempt to cast here
    return resultList;
}