现在我的代码看起来像这样:(简化!)
public static IQueryable<T> ListedProducts<T,V>(this IQueryable<T> collection)
where T : ProductCollection<V>
where V: Product
{
return collection.Where(x => x.Listed == true);
}
要使用它,我必须像这样定义两种类型:
SomeCollection.ListedProducts<BikeCollection,BikeProduct>()
这就是我希望的样子:
我希望能够写一些这样的东西:
public static IQueryable<T> ListedProducts<T<V>>(this IQueryable<T<V>> collection)
where T : ProductCollection<V>
{
return collection.Where(x => x.Listed == true);
}
我只需要写:
SomeCollection.ListedProducts()
我认为这是可能的,因为“SomeCollection”包含通用 ListedProducts 方法的两种类型。
希望我的问题足够清楚并且有解决方案:)
更新
关于我的代码的设置方式似乎有很多麻烦,所以这里有一些类(简化)
产品系列
public class ProductCollection<T> where T : Product
{
public int Id { get; set; }
public string CollectionName { get; set; }
public virtual ICollection<T> Products { get; set; }
public bool Listed { get; set; }
}
产品系列
public class BikeCollection : ProductCollection<BikeProduct>
{
//Bike specific properties
}