Utilizando las clases de .NET generadas para extender las clases propias.¿Cómo?

StackOverflow https://stackoverflow.com/questions/9433210

  •  12-11-2019
  •  | 
  •  

Pregunta

Utilicé el Owlgrinder para crear la asamblea e importé la biblioteca a mi proyecto.Eso funciona bien.Ahora quiero escribir mi propio conjunto de clases.Por lo tanto, extendí estos con el equivalente a la asamblea.Pero simplemente no funciona.

La ontología sostiene una clase llamada ManagementObject.

He creado otra clase (C #) llamada RealWorldObject:

public class RealWorldObject : ManagementObject
    {
        public RealWorldObject(string uri) : base(uri) { }
        public RealWorldObject(string uri, RdfDocument rdfdocument) : base(uri, rdfdocument) { }
        public RealWorldObject(RdfDocument rdfdocument) : base(rdfdocument) { }

        public String getClassName()
        {
            return this.OwlClassName;
        }
        public static RdfDocument addRealWorldObjectIndividualt(RdfDocument rdfDocument)
        {
            Vehicle vehicle = new Vehicle("vehicle1", rdfDocument);

            FixedEvent fxE1 = new FixedEvent("autoGekauft", rdfDocument);
            fxE1.agent = new xmlns.com.foaf._01.Person("robert", rdfDocument);

            vehicle.hasFixedEvent = fxE1;

            return rdfDocument;
        }

que conduce al error:

objectmanagement.object.realworldObject. Declara una (y solo una) OWLCLASSATITRIBUTE.Este es un error de implementación del complemento.

¿De qué otra manera debo ampliar las clases generadas por el OWLGrinder? Gracias hace mucho tiempo que usé C #, así que soy un poco oxidado.

¿Fue útil?

Solución

Las clases generadas automáticamente producidas por Owlgrinder.exe no han sido diseñadas en mente de la herencia. No estoy diciendo que esté mal, simplemente no está diseñado para eso. Las clases generadas automáticamente contienen un montón de metadatos definidos como atributos de clase y la herencia oculta todo eso. La infraestructura cuenta con la presencia de estos atributos y, si están ocultos, obtiene estos mensajes de error de tiempo de ejecución.

Uso del navegador de objetos Visual Studio, eche un vistazo a los atributos sobre las clases generadas automáticamente. OwlclassAttribute, subclaseFATATTRIBUTE, LightversionAttribute es ciertamente obligatorio. Puede simplemente copiar / pegar los atributos de la clase de administración de administración en la parte superior de su clase RealWorldObject. Supongo que funcionará. Pero, de nuevo, podría atropellar con tapones adicionales, ya que no sigue las rutas predeterminadas que Rowlex ha sido diseñado para. Esto es un poco viviendo en el borde :)

En lugar de herencia, puede considerar la ingeniería inversa con su conjunto generado automáticamente a C # usando reflector u otras herramientas. Tener el código fuente en su mano, puede modificar las clases generadas directamente. Puede hacer que su administración sea parcial de la clase, e implemente sus métodos adicionales en un archivo separado.

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