Pregunta

Tengo un archivo que será utilizado en muchos proyectos de aplicaciones. la única diferencia de estos archivos es el nombre de referencia servicio web. código como el siguiente:

public void Test(){
    Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client();
    // do something....
}

como el código anterior, el 'Kevin.ServiceReference1' será reemplazado por espacio de nombres especificado proyecto de aplicación. por lo que, de acuerdo con DRY (no repita a sí mismo), no debería copiar el archivo a muchos proyectos y cambiar el nombre de la parte especificada manualmente. ¿hay alguna manera puedo reemplazar fácilmente algunas partes de mi archivo de plantilla a algo relacionado con el proyecto?

¿Fue útil?

Solución

¿Has mirado en el sistema de código de plantillas T4 de Microsoft? Podría ser justo lo que necesita.

Enlaces: http://msdn.microsoft.com/en-us /vstudio/cc308634.aspx turismo Els href="http://visualstudiomagazine.com/articles/2009/05/01/visual-studios-t4-code-generation.aspx" rel="nofollow noreferrer"> http://visualstudiomagazine.com /articles/2009/05/01/visual-studios-t4-code-generation.aspx

Otros consejos

Esto no es una cuestión de SECO; mientras que los archivos podrían parecer similares, * no se está repitiendo, porque la única operación - la declaración y la asignación de una variable -. es diferente para cada tipo **

Si bien es posible que desee ver en dar a sus clases de un padre común si comparten un propósito común, no hay nada en su ejemplo que sugiere que las clases son, de hecho, relacionados de ninguna manera.

Si usted está buscando maneras de automatizar el proceso para que sea más fácil para ti, echa un vistazo a Plantillas T4 (libre de Microsoft), o PostSharp . Hay muchos otros temas aquí sobre la generación de código.

Si lo único que cambia en el archivo es el nombre del espacio de nombres y la clase, se puede extraer toda la otra funcionalidad común en una clase base. Entonces, para cada uso diferente, hacer una clase derivada que hereda de la clase base. La clase derivada simplemente podría tener un método sencillo que devolvería el espacio de nombres específico / clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top