厳密に型指定されたエンティティ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
厳密に型指定されたエンティティは、基本のIEntityインターフェイスを拡張し、ITypedEntityから継承するSDK内の特殊なオブジェクトです。プロパティとメソッドへの直接アクセスを提供し、エンティティデータの管理を簡素化します。たとえば、IAssetエンティティは、手動で型キャストを必要とせずに、FileNameやTitleなどのプロパティへのアクセスを提供します。
C# のプロパティとメソッドを使用して、同様のエンティティを作成できます。これらはすべてIEntityオブジェクトであるため、エンティティ クライアント、クエリ クライアント、およびその他のクライアントで使用できます。

SDKでは、次の標準の厳密に型指定されたエンティティが使用されます。
|
厳密に型指定されたエンティティ |
Namespace |
プロパティ |
メソッド |
|---|---|---|---|
|
IMailTemplateEntity |
Stylelabs.M.Sdk.Contracts.Notifications |
|
|
|
IAsset |
Stylelabs.M.Sdk.Contracts.Content |
|
|
使い
厳密に型指定されたエンティティは、一部のエンティティ メンバーをC# プロパティとして公開します。たとえば、IAssetには次のプロパティが含まれます。
次の文は、FileNameの値を取得するために使用されます。
次の文は、FileNameの値を更新するために使用されます。
これらは主にショートカットであり、リレーションも同様の方法で管理されます。ただし、厳密に型指定されたエンティティは、単にプロパティとリレーションの値にアクセスしたり変更したりするだけでなく、追加の機能を提供する場合があります。
厳密に型指定されたエンティティを使用するには、まずその特定のエンティティのインスタンスを取得する必要があります。場合によっては、通知クライアントからのメソッドTask<IMailTemplateEntity> GetMailTemplateAsync(...) のように、エンティティはクライアントから直接返されます。それ以外の場合は、エンティティを手動でキャストする必要があります。
エンティティ クライアントはすべてのエンティティをIEntityとして返しますが、エンティティの定義がわかっている場合は、エンティティを正しいタイプにキャストできます。厳密に型指定されたバージョンが存在する場合、エンティティ ファクトリは適切なインスタンスを自動的に作成します。
たとえば、ID 1000を持つエンティティがアセットであることが確実な場合は、次のスニペットを使用してそのエンティティを取得できます。
その後、次のようにしてファイル名を取得できます。
部分的なエンティティ
パーシャルエンティティは、完全にロードされていないエンティティです。既定では、SDKはエンティティの一部 (既定のカルチャ、すべてのプロパティ) のみを読み込み、リレーションは読み込みません。この動作は、たとえば、負荷構成を渡すことで、そのエンティティの他の部分を読み込むように変更できます。
プロパティまたはリレーションシップが取得されない場合、SDKは読み込まれていないプロパティに対してはnullを返し、読み込まれていないリレーションシップに対しては空のコレクションを返します。読み込まれていないエンティティにプロパティを設定しようとすると、SDKは例外をスローします。これは、厳密に型指定されたエンティティにも当てはまります。
たとえば、アセットがプロパティなしでロードされ、次のようにFileNameにアクセスしようとするとします。
ファイル名がサーバー上に存在する場合でも、FileNameプロパティが読み込まれていないため、結果はnullになります。
これを回避するには、必要なメンバーを含むエンティティをロードすることを常に確認してください。さらに、厳密に型指定されたエンティティはLoadTypedMembersAsyncメソッドをサポートしており、必要に応じて厳密に型指定されたインターフェイスのすべてのメンバーを読み込むことができます。ただし、この方法はリソースを大量に消費するため、注意して使用する必要があります。
厳密に型指定されたアセットは、そのメンバーが親エンティティと一致する場合にのみ正しく機能します。たとえば、M.Asset定義でFileNameプロパティの名前を変更すると、厳密に型指定されたアプローチは機能しなくなります。ただし、IEntityメソッドを使用して値を取得することはできます。