C#, .net 3.5C# Résumé Méthode générique
J'essaye de créer une classe de base qui a une méthode générique. Les classes qui en héritent doivent spécifier le (s) type (s) de la méthode.
La prémisse pour cela est de créer des classes qui gèrent le filtrage.
J'ai donc:
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);
}
}
pense qu'il est quelque chose de simple, mais je ne peux pas obtenir la syntaxe droite FilterBase pour la méthode abstraite GetFilter.
EDIT
Idéalement, aimerait garder que la méthode que générique et non la classe. Si ce n'est pas possible, veuillez me le faire savoir.
ça marche, dois-je rendre la classe générique? Je ne peux pas garder la méthode générique? Raison que je demande est il peut y avoir plusieurs GetFilter pour la même classe qui prennent un IQueryable différent que 'Linq.Project' –
@B Z: Vous pouvez faire que la méthode générique, mais il devra rester générique jusqu'à invoqué. Vous ne pouvez pas dériver de la classe non générique et affecter le type générique à la méthode lorsque vous essayez dans votre question. L'appelant devrait fournir le type à la méthode dans ce cas. –
@Mark - thx. On dirait une limitation à moi? Savez-vous s'il existe d'autres explications? Peut-être dans C# In Depth de Jon Skeet? –