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。
编辑
理想的情况下,想只保留方法通用,而不是类。如果不可能,请让我知道..
工作,我必须使类通用,但?我不能只保持该方法通用?我想问的原因是可能有多个GetFilter对于同一个类使用不同的IQueryable比'Linq.Project' –
2009-08-28 21:06:57
@B Z:只能使该方法是通用的,但它必须保持泛型直到被调用。您不能从非泛型类派生出来,并在您尝试的问题中指定方法的泛型类型。在这种情况下,调用者将不得不为该方法提供类型。 – 2009-08-28 21:24:07
@Mark - thx。似乎是对我的限制?你知道那里是否有进一步的解释?也许在Jon Skeet的C#深入? – 2009-08-28 21:40:14