Используя сгенерированные классы .NET для расширения собственных классов.Как?
Вопрос
Я использовал 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 класса и реализовывать ваши дополнительные методы в отдельном файле.