C#, .net 3.5C# Streszczenie Metoda ogólna
Próbuję utworzyć klasę bazową, która ma metodę generyczną. Klasy, które dziedziczą z niego, powinny określać typ (typy) metody.
Przesłanką tego jest tworzenie klas zarządzających filtrowaniem.
Więc mam:
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);
}
}
że to jest coś proste, ale nie mogę uzyskać prawo składni w FilterBase dla abstrakcyjnej metody getFilter.
EDIT
Idealnie chciałby zachować tylko metodę jako ogólny i nie klasy. Jeśli nie jest to możliwe, proszę dać mi znać ..
który działa, czy muszę jednak sprawić, aby klasa była ogólna? Czy nie mogę po prostu zachować ogólnej metody? Rozumiem, że może istnieć wiele GetFilterów dla tej samej klasy, które przyjmują inne IQueryable niż "Linq.Project" –
@B Z: Można uczynić tylko ogólną metodę, ale wtedy będzie musiała pozostać ogólna do czasu jej wywołania. Nie możesz wywodzić się z klasy nietypowej i przypisać typ ogólny do metody podczas próby pytania. W takim przypadku osoba wywołująca musiałaby podać typ tej metody. –
@ Mark - thx. Wydaje mi się, że to ograniczenie? Czy wiesz, czy istnieje dalsze wyjaśnienie? Może w C# In Depth Jona Skeeta? –