Estoy trabajando en un motor que debe ser configurable por el usuario (no el usuario final, el usuario de la biblioteca) para usar diferentes componentes. Por ejemplo, digamos que la clase Drawer
debe tener un ITool
, Pencil
o Brush
, y un IPattern
, Plain
o Mosaic
. Además, digamos que un Brush
debe tener un IMaterial
de cualquiera Copper
o Wood
Uso de genéricos en una clase no similar a una colección
Digamos que el efecto de la elección de Pencil
o Brush
es realmente muy distintas, y lo mismo pasa con el tipo IPattern
. ¿Sería una mala idea para codificar la clase Drawer
con conceptos genéricos como esto:
public class Drawer<Tool, Pattern> where Tool: ITool where Pattern : IPattern { ... }
public class Brush<Material> where Material : IMaterial { ... }
Se podría entonces utilizar esa clase como:
Drawer<Pencil, Mosaic> FirstDrawer = new Drawer<Pencil, Mosaic>();
Drawer<Brush<Copper>, Mosaic> SecondDrawer = new Drawer<Brush<Copper>, Mosaic>();
mayoría Solía genérico para colecciones y tal y refugio' Ver realmente genéricos utilizados para ese tipo de cosas. ¿Debería?
Gracias, la parte sobre "a menos que el motor que está creando tenga métodos con argumentos o tipos de retorno del tipo genérico "realmente me ayudó a darme cuenta de lo inútil que hubiera sido usar genéricos en ese caso". Claro que funcionaría usando genéricos, pero sería usar genéricos solo para usar genéricos :-P – Tipx