Используя сгенерированные классы .NET для расширения собственных классов.Как?

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

  •  12-11-2019
  •  | 
  •  

Вопрос

Я использовал Owlgrinder для создания сборки и импортировал библиотеку в мой проект.Это работает нормально.Теперь я хочу написать свой собственный набор классов.Поэтому я расширил их эквивалентом сборки.Но это просто не работает.

Онтология содержит класс по имени manucialObject.

Я создал другой класс (C #) под названием 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;
        }
.

Что приводит к ошибке:

objectManagement.Object.realworldObject делает один (и только один) совойклассаттрибут.Это ошибка внедрения плагина.

Как еще я должен продлить сгенерированные классы OWLGrinder. THX Это давно, что я использовал C #, поэтому я вроде ржавый.

Это было полезно?

Решение

Автогеногенные классы, произведенные Owlgrinder.exe, не были разработаны для наследования в виду. Я не говорю, что это неправильно, это просто не предназначено для этого. Авто генерируемые классы содержат много метаданных, определенных как атрибуты класса, и наследство скрывает все это. Инфраструктура имеет значение на наличие этих атрибутов, и если они скрыты, вы получаете эти сообщения об ошибках времени выполнения.

Использование Visual Studio Object Object Browser, взгляните на атрибуты по сравнению с автоматически сгенерированными классами. OWLCLASSATTRIBUTE, подклассофаттрибут, LightVersionAttribute, безусловно, обязательно. Вы можете просто скопировать / вставлять класс атрибуты ManagementObject на верхней части вашего класса RealWorlobject. Я предполагаю, это будет работать. Но опять же, вы можете столкнуться с дополнительными пробками по шоу, поскольку вы не следуете, для маршрутов по умолчанию ROWLEX был разработан для. Это немного жить на краю :)

вместо наследования, вы можете рассмотреть возможность обратного проектирования вашей автоматической сгенерированной сборкой C # с использованием отражателя или других инструментов. Наличие исходного кода в вашей руке, вы можете изменять сгенерированные классы напрямую. Вы можете сделать ваш класс ManagentObject класса и реализовывать ваши дополнительные методы в отдельном файле.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top