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