2016-03-29 17 views
0

私は2つの静的データ型(IClientとIClientHour)を含むパッケージを開発しました。静的データ型(IClientHour)の1つは、他の静的データ型(IClient)に依存します。パッケージを介して依存関係を持つ静的データ型をインストールする

私は、Composite C1のインスタンスにパッケージを介してデータ型を追加しようとしています。 DataTypePackageFragmentInstallerクラスとDataTypePackageFragementUninstallerクラスを利用して、データ型を登録してパッケージにドロップしたいと思います。

私が直面してる問題は、パッケージを検証するために失敗しているということで、次のエラーを吐く:

Failed to build data type descriptor for interface 'Builders.Data.IClientHour' The type 'Builders.Data.IClient' could not be found.

どちらのタイプには、私がFilePackageFragmentInstaller経由でCMSにコピーしていますDLLです。 Composite C1フォーラムの検索では、型を含むアセンブリのFile要素にassemblyLoad = "true"を追加することを提案しました。この提案は私が直面している問題を解決しませんでした。

<mi:PackageFragmentInstallers> 
     <mi:Add installerType="Composite.Core.PackageSystem.PackageFragmentInstallers.FilePackageFragmentInstaller, Composite" uninstallerType="Composite.Core.PackageSystem.PackageFragmentInstallers.FilePackageFragmentUninstaller, Composite"> 
      <Files> 
       <File sourceFilename="~\Bin\Builders.dll" targetFilename="~\Bin\Builders.dll" allowOverwrite="false" assemblyLoad="true" /> 
      </Files> 
     </mi:Add> 

     <mi:Add installerType="Composite.Core.PackageSystem.PackageFragmentInstallers.DataTypePackageFragmentInstaller, Composite" uninstallerType="Composite.Core.PackageSystem.PackageFragmentInstallers.DataTypePackageFragmentUninstaller, Composite"> 
      <Types> 
       <Type name="Builders.Data.IClient, Builders" /> 
       <Type name="Builders.Data.IClientHour, Builders" /> 
      </Types> 
     </mi:Add> 
</mi:PackageFragmentInstallers> 

どれ支援/このタスクを達成するとの提案は大歓迎です。

は、以下のデータ型とアセンブリに関連するセクションを表示する私のINSTALL.XMLの要約版です。

答えて

1

CodePlexで同じ質問をした後、wysockiとburningiceは私が直面している問題を正しい方向に導くことができました。

簡単に言えば、IClientHourデータ型からIClientデータ型の型を参照するために文字列を使用しました。文字列を使用する場合は、参照にアセンブリ名を含める必要があります(例:Builders.Data.IClient、Builders)。

コンポジットC1の例では、文字列の使用を避け、代わりにtypeofを使用して外部キーを参照する必要があります。ここで

は私がorginally私のデータ型を参照しようとした方法の例である:ここで

[ForeignKey("Builders.Data.IClient", AllowCascadeDeletes = true, NullReferenceValue = "{00000000-0000-0000-0000-000000000000}")]

は、私は、文字列を使用して、それを参照している必要があります方法です:コンポジットC1の例パー

[ForeignKey("Builders.Data.IClient, Builders", AllowCascadeDeletes = true, NullReferenceValue = "{00000000-0000-0000-0000-000000000000}")]

とこれは、別のデータ型を参照する方法です(このメソッドを使用する場合は、関係に使用するフィールドの名前も含める必要があります)。

[ForeignKey(typeof(Builders.Data.IClient), "Id", AllowCascadeDeletes = true, NullReferenceValue = "{00000000-0000-0000-0000-000000000000}")]

参考文献:

CodePlexのフォーラムのスレッド:http://compositec1.codeplex.com/discussions/652976

コンポジットドキュメント:http://docs.composite.net/Console/Static-IData-Types/Example2

関連する問題