C#, .net 3.5C# Phương pháp chung trừu tượng
Tôi đang cố gắng tạo lớp cơ sở có phương pháp chung. Các lớp kế thừa từ nó sẽ chỉ định (các) kiểu của phương thức.
Tiền đề của việc này là để tạo các lớp quản lý lọc.
Vì vậy, tôi có:
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);
}
}
nghĩ rằng nó là một cái gì đó đơn giản, nhưng tôi không thể nhận đúng cú pháp trong FilterBase cho phương pháp trừu tượng GetFilter.
EDIT
Lý tưởng nhất, muốn giữ chỉ phương pháp như chung chung và không phải là lớp. Nếu không thể, vui lòng cho tôi biết ..
hoạt động, tôi có phải làm cho lớp học chung chung không? Tôi không thể giữ nguyên phương pháp chung? Lý do tôi hỏi là có thể có nhiều GetFilter cho cùng một lớp mà có một IQueryable khác nhau hơn 'Linq.Project' –
@B Z: Bạn chỉ có thể làm cho phương thức chung chung, nhưng sau đó nó sẽ phải ở lại chung cho đến khi được gọi. Bạn không thể lấy được từ lớp không chung chung và chỉ định kiểu generic trên phương thức khi bạn thử câu hỏi của bạn. Người gọi sẽ phải cung cấp kiểu cho phương thức trong trường hợp đó. –
@Mark - thx. Có vẻ như là một hạn chế đối với tôi? Bạn có biết nếu có thêm lời giải thích không? Có lẽ trong C# In Depth của Jon Skeet? –