我有一个以这种方式声明的扩展方法:
public static IEnumerable<TEntity> AsEnumerable<TEntity>(this IDBQueryable<TEntity> dbQueryable) where TEntity : class
{
return dbQueryable.Query.AsEnumerable();
}
使用样本将是下一个:
//It works properly
IDBQueryable<Customer> customers = GetCustomerSet();
customers.AsEnumerable();
// It cannot be compiled because int type doesn't fullfill
// the constrains of the extension method
// It must be a reference type in order to be passed as a parammeter.
IDBQueryable<int> customerIDs = GetCustomerIDs();
customers.AsEnumerable();
如何使用适用于我所展示的两个用例的扩展方法? 提前谢谢。
答案 0 :(得分:1)
只需删除where TEntity : class
约束即可。这里没有明显需要约束,任何: class
或: struct
的使用都会阻止这两种用例中的一种。