2012-02-24 12 views
0

OWLGrinderを使用してアセンブリを作成し、ライブラリをプロジェクトにインポートしました。それはうまく動作します。今私は自分のクラスを書くつもりです。したがって、アセンブリの同等物でこれらを拡張しました。しかし、それは動作しません。生成された.netクラスを使用して、独自のクラスを拡張します。の仕方?

オントロジにはManagementObjectという名前のクラスがあります。

 
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 does declare one (and only one) OwlClassAttribute. This is an implementation bug of the plugin.

は、他にどのように私は OWLGrinderによって生成されたクラスを拡張する必要があり

は私がRealWorldObjectと呼ばれる別のクラス(C#)を作成しました。 Thx私はC#を使用していたのはずっと前です。

+0

コンストラクタオーバーライドは目的を果たさない! – Bas

+0

私は知っている、それがなくても動作するはずです。しかし、もし私が: Realworldobject rw = new RealworldObject( "bla"); 1つの引数をサポートするコンストラクタがないというエラーが表示されます。 – robert

答えて

0

OwlGrinder.exeによって生成される自動生成クラスは、継承のために設計されていません。私はそれが間違っていると言っているわけではない、それはそのために設計されていない。自動生成されたクラスには、クラス属性として定義されたメタデータがたくさん含まれており、継承によってすべてが隠されます。インフラストラクチャはこれらの属性の存在をカウントし、非表示の場合はこれらのランタイムエラーメッセージを取得します。

Visual Studio Object Browserを使用して、自動生成されたクラスの属性を確認します。 OwlClassAttribute、SubClassOfAttribute、LightVersionAttributeは必須です。 RealWorldObjectクラスの上部にあるManagementObjectのクラス属性を単純にコピー/ペーストすることができます。私はそれが動作すると仮定します。しかし、やはりROWLEXが設計されたデフォルトのルートに従わないので、ショーストッパーを追加する可能性があります。これは端に少し暮らしています:)

継承の代わりに、リフレクトツールまたは他のツールを使用して、自動生成されたアセンブリをC#にリバースエンジニアリングすることも考えられます。ソースコードを手に入れて、生成されたクラスを直接変更することができます。あなたはManagementObjectクラスを部分的にし、別のファイルに追加のメソッドを実装するかもしれません。

+0

ありがとうございます。それは私に明確な立場を与えます。 – robert

関連する問題