¿Es posible tener dos partes (el mismo espacio de nombres, el mismo nombre de clase) en una clase parcial en DLL por separado?Clases parciales en dlls separados
Respuesta
De MSDN -Partial Classes and Methods:
Todas las definiciones de tipo parcial destinadas a ser partes del mismo tipo debe ser definido en el mismo ensamblaje y el mismo módulo (.exe o .dll). Las definiciones parciales no pueden abarcar módulos múltiples.
No, no es posible. Cuando se compila el ensamblaje, la clase debe completarse.
No. Las clases parciales son una función puramente de lenguaje. Cuando se compila un ensamblaje, los archivos se combinan para crear el tipo. No es posible distribuir los archivos en diferentes conjuntos.
Dependiendo de lo que quiera hacer, es posible que pueda usar extension methods para lograr lo que necesita.
La pregunta es por qué le gustaría hacer una clase parcial en otro ensamblado? Puede definir clases abstractas e interfaces a través de ensamblajes, tal vez necesite investigar eso.
En mi humilde opinión hay casos válidos, por ejemplo: es posible que desee agregar anotaciones de formulario MVC a una clase de modelo definida en un ensamblaje diferente. El conjunto en sí no sabe en qué contexto se utiliza, por lo que la clase en el conjunto no debe tener ninguna anotación. Sin embargo, podrían agregarse en una clase parcial en el contexto MVC (si fuera posible). – nyi
nyi, ¿por qué no heredas de esa clase y declaras tus atributos en la parte superior? Incluso puede llamarlo con el mismo nombre, si lo prefiere. – Gleno
Puede usar métodos de extensión cuando desee agregar un método a una clase en una dll diferente. El único inconveniente de este método es que no puede agregar métodos estáticos.
Mientras que otras respuestas proporcionan el desagradable "No" que cualquier persona que aterrizó en esta página no quería ver o escuchar, me llamó la atención otro pensamiento que no ha sido mencionado aquí todavía. Si se permitieran clases parciales en las asambleas, se obtendría acceso a los miembros privados a tipos existentes que no fueron escritos por él y se le permitiría manipularlos de forma no intencionada por el autor original, poniendo en peligro también a todas las clases heredadas.
No solo eso, esas clases en otros ensambles (y sus hijos) tendrían que ser recompiladas para que funcione. Por lo tanto, lógicamente no es posible permitir la división de una clase en diferentes conjuntos.
- 1. Clases parciales en proyectos
- 2. Clases parciales en C#
- 3. Creando clases parciales en C#
- 4. C# Clases parciales
- 5. clases parciales de Java
- 6. Depuración de clases parciales
- 7. Uso de clases parciales
- 8. Clases parciales de WinForm
- 9. clases parciales + DataAnnotations
- 10. xsd.exe para generar clases como archivos separados?
- 11. asp.net: clases parciales y herencia
- 12. Error con C# Clases parciales
- 13. Implementación de interfaces en clases parciales
- 14. Poner clases anidadas en archivos separados
- 15. Convención de nomenclatura para nombres de archivo de clases parciales?
- 16. ¿Está formalmente definido el "orden textual" en las clases parciales?
- 17. ¿Cuál es el propósito de las clases parciales?
- 18. .NET clases parciales frente a la herencia
- 19. XML Comentando sobre clases/métodos parciales
- 20. Agregar DataAnnontations a las clases parciales generadas
- 21. EF 4, cómo agregar clases parciales
- 22. Problema con la implementación de la interfaz en clases parciales
- 23. ¿Herramienta para unir clases parciales en una sola clase?
- 24. Objective-C aplicación parcial de las clases en archivos separados
- 25. Forma automática de poner todas las clases en archivos separados
- 26. wsimport - cómo generar clases de punto final de servicio y clases JAXB en proyectos/carpetas separados
- 27. Diferencia entre las clases parciales C# y Objective C?
- 28. Herencia con Silverlight Clases parciales de control de usuario
- 29. Las declaraciones parciales no deben especificar diferentes clases base
- 30. Plantillas C++: Especificaciones parciales de plantillas y clases de amigos
como los demás dijeron que no es posible, pero hay formas de complementar las clases con un nuevo comportamiento de diferentes fuentes, ¿qué es exactamente lo que quieres hacer en diferentes dlls? – Ozan
En mi caso, quiero agregar un par de métodos estáticos a una clase que está definida en una biblioteca de terceros. Los métodos de extensión no funcionarán y tampoco lo harán las interfaces y la herencia, porque la clase es estática. Después de descubrir que puedes tener clases estáticas parciales, vine aquí para ver si funciona en todos los ensamblajes, pero desafortunadamente parece que esto tampoco funcionará. – Ben