2012-07-08 24 views
5

Espero que haya alguna forma inteligente de hacerlo. Tengo un servicio base genérico que tiene varios métodos ... Por lo tanto, actualmente hay algunos métodos en esta clase base, como Crear (T obj). Lo que me gustaría es para el compilador para crear un nombre más intuitivo de parámetros (con sede fuera de alguna regla) para que cuando se crea una instancia concreta del servicio de base de la siguiente manera:Creando nombres de parámetros significativos con Generics

public class ProductService : BaseService<Product> 

quiero que se compile el método ProductService a este (por ejemplo):

public Product Create(Product product) 

en lugar de

public Product Create(Product obj) 

sé que parece menor pero pasante me preguntó el otro día y yo no podía decirle 100% seguro de que era no es posible

+2

Yo no sé de ninguna manera de lograr lo que están pidiendo, pero incluso usar 'entity' apposed a' obj' tendría más sentido para mí al leer tu código. Especialmente si la clase se hereda de una interfaz 'IEntity' o de una clase 'Entity'. – Paul

+0

De hecho ... de acuerdo ... – Rikon

Respuesta

3

Hasta donde yo sé, no hay forma de lograr esto automáticamente. Sin embargo, si realmente quería hacerlo de todos modos, podría hacer que el método virtual en BaseService, y anular en cada subclase:

public override Product Create(Product product) { 
    return base.Create(product); 
} 
+2

Estoy de acuerdo en que esa es probablemente la mejor manera de lograr lo que solicitó el afiche, pero eso suena como un gran esfuerzo para un beneficio realmente pequeño. No aconsejaría realmente hacerlo, pero funcionaría. –

+0

@JonathanRupp: +1; estuvo de acuerdo, en particular, porque 'Product obj' o' Product entity' todavía tienen sentido semántico. –

+0

Sí ... A veces hay estos pequeños subtítulos que echo de menos en ocasiones ... Esperaba algo como public void Insert (T @@ T.GetType(). Name.ToLower()) Por otra parte, con esa mentalidad, podría recopilar el tiempo para reflexionar sobre T ... Pero bueno ... pongo un buen equipo con el equipo clr, supongo ... – Rikon

Cuestiones relacionadas