Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

クラス定義クラスの概要

クラス定義クラスの概要

クラス定義クラスは、Caché 統合ディクショナリにオブジェクト・アクセスと SQL アクセスを提供します。これらのクラスを使用して、クラス定義の調査、クラス定義の修正、新規クラスの生成をプログラムでできます。ドキュメントを自動生成するプログラムを記述することもできます。これらのクラスは、%Dictionary パッケージに含まれます。

Note:

%Library パッケージには、従来の一連のクラス定義クラスがあります。これらは既存のアプリケーションとの互換性のために保存されています。新規のコードでは、%Dictionary パッケージ内のクラスを使用する必要があります。これらのクラスを使用するときは、正しいパッケージ名を指定してください。

クラス定義クラスには、定義クラスとコンパイル・クラスの 2 つの並列セットがあります。

定義クラス定義は、特定のクラスの定義を表します。それは、そのクラスによって定義された情報のみを含み、スーパークラスから継承された情報は含みません。ディクショナリのクラスに関する情報を提供するだけでなく、これらのクラスを使用して、プログラム的にクラス定義を変更したり新規作成できます。

コンパイル・クラス定義は、スーパークラスから継承されるクラス・メンバをすべて含みます。コンパイル・クラス定義オブジェクトは、コンパイルされたクラスからインスタンスを生成するだけです。コンパイル・クラス定義は保存できません。

この付録では、定義クラス定義のみ説明します。コンパイル・クラス定義のオペレーションも類似しています。

定義クラスを表すクラス定義のファミリには、以下のものが含まれます。

クラス 説明
%Dictionary.ClassDefinitionOpens in a new tab クラス定義を表します。クラス・メンバ定義を含むコレクションと、クラス・キーワードを含みます。
%Dictionary.ForeignKeyDefinitionOpens in a new tab クラス内の外部キー定義を表します。
%Dictionary.IndexDefinitionOpens in a new tab クラス内のインデックス定義を表します。
%Dictionary.MethodDefinitionOpens in a new tab クラス内のメソッド定義を表します。
%Dictionary.ParameterDefinitionOpens in a new tab クラス内のパラメータ定義を表します。
%Dictionary.PropertyDefinitionOpens in a new tab クラス内のプロパティ定義を表します。
%Dictionary.QueryDefinitionOpens in a new tab クラス内のクエリ定義を表します。
%Dictionary.TriggerDefinitionOpens in a new tab クラス内の SQL トリガ定義を表します。
Important:

繰り返しますが、コンパイルされていないクラス定義 (%Dictionary.ClassDefinitionOpens in a new tab のインスタンスとして) の内容は、コンパイル済みクラス定義 (%Dictionary.CompiledClassOpens in a new tab のインスタンスとして) の内容と必ずしも同一ではありません。 %Dictionary.ClassDefinitionOpens in a new tab クラスは、クラスの定義を調査または変更する API を提供しますが、継承を解決したコンパイル済みクラスを表すことはありません。一方、%Dictionary.CompiledClassOpens in a new tab は、継承を解決したコンパイル済みクラスを表します

例えば、クラス定義内の特定のキーワードの値を特定しようとする場合は、%Dictionary.ClassDefinitionOpens in a new tabkeywordnameIsDefined() メソッド (OdbcTypeIsDefined()Opens in a new tabServerOnlyIsDefined()Opens in a new tab など) を使用します。このブーリアン・メソッドが false を返す場合、キーワードはそのクラスに対して明示的に定義されていません。クラス定義のキーワードの値を調べると、それは既定値です。ただし、コンパイル (継承の解決を含む) の後では、キーワードの値は、継承によって決定され、定義されていた値とは異なることがあります。

FeedbackOpens in a new tab