我已经定义了自己的模型类MyModel.Customer
我在使用<T>
而非直接模型类的方法中遇到转换问题。
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>'
。显式转换 存在(你是否错过演员表?)
为什么呢?任何线索?
答案 0 :(得分:1)
你是不是想这样做:
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;
}