最近のアクセス:
GeneXus X Evolution 3 におけるエクステンションとパターンの互換性
互換性レベルが更新されたため、すべてのエクステンションとパターンを再コンパイルする必要があります。
モジュールと KB オブジェクト
ナレッジベースにモジュールが追加されたことにより、名前が指定された KB オブジェクト (EntityKey) のインスタンスの取得に関連する API が大幅に変更されました。多くのタイプのオブジェクトで、オブジェクトが異なるモジュールに属している場合には重複した名前を使用できるようになりました。KB オブジェクトの QualifiedName (形式: <モジュール名>.<オブジェクト名) が一意の名前になります。
このアーキテクチャ上の違いにより、1 つの名前を 1 つのオブジェクトにマッピングするというこれまでの前提に依存するインターフェース (Model.Object.Get(Guid type, String name) および関連するメソッドなど) は廃止することが決まりました。そのため、エクステンションまたはパターンを再コンパイルするだけで、ロジックの変更が必要な可能性のある部分がコンパイラーエラーによって示されます。
モジュールをサポートするようにコードを更新する方法
1 つのオブジェクトを取得するための KBModel.Objects.Get(type, name) は使用されなくなりました。代わりに使用するのは KBModel.Objects.Get(type, qualifiedName) です。これは、QualifiedName によってオブジェクトが一意に識別されるためです。Evolution 3 SDK で古いコードをコンパイルすると、次のエラーが発生します:
Argument 2: cannot convert from 'string' to 'Artech.Architecture.Common.Objects.QualifiedName'
この API 呼び出しの代わりとなる方法は 2 つあります:
  1. オブジェクトの QualifiedName を作成して、新しい KBModel.Objects.Get(type, qualifiedName) メソッドで使用します。QualifiedName インスタンスは、モジュールとオブジェクト名 (またはモジュール名とオブジェクト名) を使用して構築できます。この方法は、オブジェクトが存在するモジュールが分かっている場合はいつでも使用できます。このメソッドは、従来のメソッドと同様に、KB オブジェクトまたは null (一致するオブジェクトがない場合) を返します。
  2. 新しい ResolveName(fromModule, type, name, out resolveResult) メソッドを使用します。fromModule パラメーターと name パラメーターは必須です。type はオプションです。このメソッドは、指定のモジュールのコンテキストにおいて、入力された名前 (オブジェクト名、完全修飾名、または部分修飾名を指定できます。たとえば、オブジェクト名が "A.B.C.D" の場合、"D" のみ、または "B.C.D" のように名前の一部を指定できます) の解決を試行します。返される ResolveResult オブジェクトには、名前解決の結果が含まれます。結果は、一致なし、一致する 1 つのオブジェクト、または一致候補の一覧 (対象のコンテキストにおいて、入力されたオブジェクト名があいまいである場合) のいずれかです。KB に複数のオブジェクトがある状況で名前の一部を指定した場合でも、解決が成功する可能性があります。入力した fromModule がここで使用されます。たとえば、ナレッジベースに 2 つの "B" オブジェクトがあり、そのうちの 1 つが "M1" モジュール内にある場合は、M1 内のオブジェクトから "B" を呼び出すと、この M1 内の "B" に解決されます。この場合、あいまいさはありません。オブジェクトの部分修飾名の解決方法を参照してください。
EntityKey または GUID によるオブジェクトの取得は変更されていません。
モジュールに属することのできるタイプのオブジェクトでは、WebPanel.Get(model, name) などの特定のメソッドでも、QualifiedName を代わりに受け取るように変更されました。ドメイン、項目属性、テーマなどにはモジュールを割り当てることができません。そのため、それらの名前もグローバルに一意のままであるため、Attribute.Get(model, name) などの古いメソッドは引き続き有効です。その他のオブジェクトについては、WebPanel.ResolveName(fromModule, name) など、タイプに固有の ResolveName メソッドも使用できます。
パターン
適切な GeneXus SDK をインストールし、次に示す互換性に関する項目属性が、Evolution 3 の特定のバージョンを使用して設定されていることを確認してください:
項目属性 バージョン
PackageCompatibilityAttribute 75406
PatternCompatibilityAttribute 79836
項目属性が存在しない場合や、想定されている値と一致しない場合は、GeneXus ではその項目属性がロードされません。 [ エクステンション ] メニューで状態を確認できます。
イメージ:15094.gif
SDK\SDKBase\Src フォルダ内の CommonPackageInfo.cs ファイルと CommonPatternInfo.cs ファイルにプロジェクトがリンクされていることを確認してください。次のように表示されます:
イメージ:15095.gif
プロジェクト内のこれらのファイルをリンクするには、こちらを確認してください。



Created: 15/01/07 22:50 by Admin Last update: 17/05/30 17:30 by Admin
カテゴリ
Powered by GXwiki 3.0