ComponetnOne コンポーネントのように LicenseProvider を使用したライセンスコンポーネントを継承したコンポーネントを作成し、それを別のプロジェクトで使用する場合は、継承後のプロジェクトにおいてもライセンス情報(licenses.licx)が必要になります。
このようなケースの場合は、以下のいずれかの方法で対処します。
継承先のコンポーネントに LicenseProvider 属性を追加する
継承先のコンポーネントに LicenseProvider 属性を追加することにより、派生コンポーネントクラスがライセンス済みとしてマークされます。コンポーネントをフォームに追加すると、Visual Studio が licenses.licx ファイルを作成・管理し、基本クラスが通常どおりライセンス処理を実行します。追加の作業は必要ありません。
例えば、WinForms 版の C1FlexGrid コンポーネントを継承した C1FlexGridEx コンポーネントを定義している場合は以下のようにします。
| C# |
コードのコピー
|
|---|---|
[LicenseProvider(typeof(LicenseProvider))] public class C1FlexGridEx : C1.Win.C1FlexGrid.C1FlexGrid { // ... } |
|
一時的に継承元コンポーネントのインスタンスをフォームに追加する
例えば、WinForms 版の C1FlexGrid コンポーネントを継承した C1FlexGridEx コンポーネントを定義している場合は、継承後のコンポーネントを使用するプロジェクト側のいずれかのフォームに、一時的に C1FlexGrid コンポーネントを配置します。これにより、C1FlexGrid のライセンス情報が licenses.licx ファイルに埋め込まれ、ベースコンポーネントがそれを検出して使用します。licenses.licx ファイルの作成後、一時的なインスタンスは削除できます。
ComponentOne コンポーネントのライセンスでは、派生コントロールのランタイムライセンスが派生クラス定義と同じアセンブリに埋め込まれており、かつそのアセンブリが DLL である場合、その派生コントロールのランタイムライセンスは受け入れないことにご注意ください。この制限は、派生コントロールクラスのアセンブリが設計時ライセンスのない他のアプリケーションで使用されることを防ぐために必要です。
このようなアセンブリを作成する場合は、「実行時にコンポーネントのインスタンスを生成する場合のライセンスの埋め込み」で説明したいずれかの手順を実行する必要があります。