1

現在、私のコードは次のようなコードです: (簡略化されています!)

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>()

これが私が望む方法です:

私は何かlkieこれを書くことができるようにしたい:

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
}
4

2 に答える 2

0

これは誰の仕事ですか?

public static class StaticFunctions
{
    public static IQueryable<ProductCollection<T>> ListedProducts<T>(this IQueryable<ProductCollection<T>> collection)
    where T : Product
    {
        return collection.Where(x => x.Listed == true);
    }
}

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 collection
}

public class BikeProduct:Product
{
    //Can be anything
}

public class Product
{
    //Can be anything
}

public partial class Form1 : Form
{


    public Form1()
    {
         InitializeComponent();
         IQueryable<ProductCollection<BikeProduct>> titi = new EnumerableQuery<ProductCollection<BikeProduct>>(new List<ProductCollection<BikeProduct>>());

        titi.ListedProducts();

        var toto = 1;
    }
}
于 2013-10-25T18:54:08.470 に答える