C#、.net 3.5C#抽象汎用メソッド
汎用メソッドを持つ基本クラスを作成しようとしています。クラスを継承するクラスは、メソッドの型を指定する必要があります。
これは、フィルタリングを管理するクラスを作成するための前提です。
だから私はしている:
public abstract class FilterBase {
//NEED Help Declaring the Generic method for GetFilter
//public abstract IQueryable<T> GetFilter<T>(IQueryable<T> query);
}
public class ProjectFilter:FilterBase {
public IQueryable<Linq.Project> GetFilter(IQueryable<Linq.Project> query) {
//do stuff with query
return query;
}
}
public class ProjectList {
public static ProjectList GetList(ProjectFilter filter) {
var query = //....Linq code...
query = filterCriteria.GetFilter(query);
}
}
は、それは単純なものであると思うが、私はされるgetFilter抽象メソッドにFilterBaseの構文の権利を取得することはできません。
EDIT
理想的には、クラスジェネリックとないものとして唯一の方法を維持したいと思います。可能でない場合は、私に教えてください。
が動作しますが、クラスを汎用化する必要がありますか?メソッドを汎用的に保つことはできませんか?なぜなら、同じクラスに対して複数のGetFilterが存在する可能性があるからです。別のIQueryableを取るのは、 'Linq.Project'以外のです。 –
@B Z:メソッドを汎用にすることはできますが、呼び出されるまで汎用でなければなりません。非ジェネリッククラスから派生させることはできませんし、あなたの質問にしようとするとメソッドのジェネリック型を割り当てることはできません。その場合、呼び出し元はメソッドに型を指定する必要があります。 –
@Mark - thx。私には限界があるようですね?そこに詳しい説明があるかどうか知っていますか?多分、ジョン・スケートのC#で深さ? –