C#, .net 3.5C# Resumen Método genérico
Estoy tratando de crear una clase base que tenga un método genérico. Las clases que heredan de él deben especificar el (los) tipo (s) de método.
La premisa para esto es crear clases que administren el filtrado.
por lo que tengo:
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);
}
}
creo que es algo sencillo, pero no puedo obtener la sintaxis correcta en FilterBase para el método abstracto getFilter.
EDITAR
Lo ideal sería que le gustaría mantener sólo el método genérico y no a la clase. Si no es posible, por favor, hágamelo saber ..
que funciona, ¿tengo que hacer la clase genérica? ¿No puedo simplemente mantener el método genérico? Motivo por el que pregunto es que puede haber varios GetFilter para la misma clase que toman un IQueryable diferente que 'Linq.Project' –
@B Z: Puede hacer que el método sea genérico, pero deberá permanecer genérico hasta que se invoque. No puede derivar de la clase no genérica y asignar el tipo genérico en el método mientras intenta en su pregunta. La persona que llama debería proporcionar el tipo del método en ese caso. –
@Mark - thx. Parece una limitación para mí? ¿Sabes si hay más explicación por ahí? ¿Tal vez en C# In Depth de Jon Skeet? –