Herencia de Openapi
así como la biblioteca de clases base de .NET Framework. La sintaxis de la etiqueta es la siguiente:Etiqueta SintaxisCopia<inheritdoc [cref=»link-ref»] [select=»filter-expr»] />cref=»link-ref «Este atributo opcional anula el método de búsqueda estándar para permitir la herencia de documentación de
temporalmente o añadirlo a la configuración del proyecto para desactivar la advertencia globalmente. Vea más abajo un ejemplo.Reglas de herencia anidadaLa etiqueta <inheritdoc /> también puede anidarse dentro de otras etiquetas de comentarios XML
desde donde obtener los comentarios (es decir, select=»/summary/node()»).Fuentes adicionales de archivos de comentarios e IntelliSenseLas fuentes adicionales de documentación heredada (es decir, comentarios de bibliotecas de clases de terceros) pueden ser
La herencia de Pimcore
Una especificación puede ser una especificación de origen o de destino en tantas relaciones de herencia como se quiera con cualquier plantilla de herencia. Cada especificación de destino puede actuar a su vez como especificación de origen y también puede volver a pasar los datos heredados, con el resultado de que
En la relación de herencia, las especificaciones de origen y de destino están vinculadas entre sí de manera que un job de fondo actualiza automáticamente los datos de la especificación de destino si se crean, modifican o borran los datos que se van a transferir en la especificación de origen. El sistema SAP también especifica en la relación de herencia si la solicitud de herencia fue creada por la especificación de origen o por la especificación de destino. En consecuencia, la especificación de origen o la especificación de destino pueden tener el papel de
Para la especificación de destino sólo se pueden sobrescribir tipos de asignación de valor completos, lo que significa que si se sobrescriben los datos referenciados en la especificación de destino, se borra la referencia para todo el tipo de asignación de valor.
Discriminador Openapi
En #1906474: [política adoptada] Dejar de documentar métodos con «Overrides …» añadimos soporte para {@inheritdoc} como única cosa en un bloque de documentación en un método de una clase, lo que significa «Heredar la documentación de una clase/interfaz padre».
Esto es muy útil, pero también tenemos muchos casos en los que estaría bien decir «Hereda la mayor parte de la documentación, pero anula esta parte» o «Hereda toda la documentación, pero añade otra parte al final».
Hereda una parte de los documentos de descripción, dependiendo del contexto. Así que, por ejemplo, puedes hacer «@return string {@inheritdoc}» para heredar los documentos de descripción del valor de retorno del método padre, y si {@inheritdoc} está en el cuerpo de los documentos, obtienes la descripción principal (pero no los parámetros/valores de retorno).
La tercera propuesta es factible de implementar, y sería consistente con phpDocumentor. Sin embargo, como invalidaría casi todos nuestros usos actuales de @inheritdoc, no es una propuesta popular.
Tuvimos una larga discusión sobre el otro tema y mientras phpdoc usa inheritdoc de esta manera, otros sistemas de doc no lo hacen, y no estoy de acuerdo en que se esté usando mayormente de esa manera en el core (en la mayoría de los casos creo que se está usando de la manera que adoptamos, para heredar todo, desde la descripción hasta los parámetros, ¿no es así?)
Herencia Openapi sin discriminador
Conceptualmente, una clase derivada es una especialización de la clase base. Por ejemplo, si tienes una clase base Animal, puedes tener una clase derivada que se llame Mamífero y otra clase derivada que se llame Reptil. Un Mamífero es un Animal, y un Reptil es un Animal, pero cada clase derivada representa diferentes especializaciones de la clase base.
Las declaraciones de interfaz pueden definir una implementación por defecto para sus miembros. Estas implementaciones son heredadas por las interfaces derivadas y por las clases que implementan dichas interfaces. Para más información sobre los métodos por defecto de las interfaces, consulte el artículo sobre interfaces.
Cuando se define una clase para que derive de otra clase, la clase derivada obtiene implícitamente todos los miembros de la clase base, excepto sus constructores y finalizadores. La clase derivada reutiliza el código de la clase base sin tener que reimplementarlo. Se pueden añadir más miembros en la clase derivada. La clase derivada extiende la funcionalidad de la clase base.
El siguiente ejemplo muestra cómo se expresan en C# las relaciones de clase demostradas en la ilustración anterior. El ejemplo también muestra cómo WorkItem anula el método virtual Object.ToString, y cómo la clase ChangeRequest hereda la implementación de WorkItem del método. El primer bloque define las clases: