Esto es lo que me gustaría hacer:¿Se puede especificar en una restricción de tipo genérico que debe implementar un tipo genérico?
public interface IRepository<TSet<TElement>> where TSet<TElement> : IEnumerable<TElement>
{
TSet<TEntity> GetSet<TEntity>();
}
es una construcción posible en tales .NET?
Editar: La pregunta no era lo suficientemente clara. Esto es lo que quiero hacer, ampliado:
public class DbRepository : IRepository<DbSet<TElement>> {
DbSet<TEntity> GetSet<TEntity>();
}
public class ObjectRepository : IRepository<ObjectSet<TElement>> {
ObjectSet<TEntity> GetSet<TEntity>();
}
Significado, quiero el tipo limitado a: - aceptar un único parámetro genérico - implementar una interfaz parámetro genérico solo dado.
¿Es esto posible? De hecho, seré feliz solo con lo primero.
public interface IRepository<TGeneric<TElement>> {
TGeneric<TArgument> GetThing<TArgument>();
}
Es posible pero ¿cuál es el punto? Si 'TSet' implementa 'IEnumerable ', también podría establecer la restricción en 'IEnumerable '. –
Aliostad
@Aliostad: ver la edición. Quiero configurar "TElement" solo cuando se llama a la función, no como un parámetro de tipo en la interfaz. –
¿Son elementos de 'Element's y' Entity's? – AakashM