1. プロパティ

プロパティ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

プロパティは、エンティティに保存されているデータを保持します。 このページでは、プロパティとその値を取得する方法とそれらの値を変更する方法について説明します。

プロパティ タイプ

SDK は、次のPropertiesプロパティを使用します。

  • ICultureSensitiveProperty: カルチャごとの値を持つプロパティ。
  • ICultureInsensitiveProperty: 1 つの値を持ち、カルチャをサポートしないプロパティ。

[!注] これは、プロパティ定義のIsMultiLanguageプロパティと関連があります。

取得のプロパティ

次の例では、次のように仮定しています。

  • entity は M.Asset エンティティである
  • Title は、カルチャに依存しないプロパティである
  • Description は、カルチャに依存するプロパティである

[!注] プロパティ名の大文字と小文字は区別されません。

非汎用

すべてのプロパティ タイプは IProperty から派生していますが、その値にアクセスするには特定のサブタイプへのキャストが必要です。

IProperty titleProperty = entity.GetProperty("Title");

[!警告] 正しくないタイプのプロパティにキャストすると、例外がスローされます。 プロパティがカルチャに依存するかどうか疑わしい場合は、(プロパティ) 定義を確認してください。

IProperty.IsCultureSensitive を使用することもできます。

汎用

または、汎用のオーバーロードを使用して、ICultureInsensitiveProperty または ICultureSensitiveProperty のいずれかに自動的にキャストします。

ICultureInsensitiveProperty titleProperty = entity.GetProperty<ICultureInsensitiveProperty>("Title");
ICultureSensitiveProperty descriptionProperty = entity.GetProperty<ICultureSensitiveProperty>("Description");

[!注] プロパティが見つからないか場合や読み込まれていない場合は、nullが返されます。 ただし、プロパティは遅延読み込みされることがあります。 詳細については、遅延読み込みを参照してください。

[!注] 読み込まれたすべてのプロパティは、IEntity.Propertiesプロパティを使用してアクセスすることができます。 これは、たとえば、LINQ を使用してプロパティをフィルタリングする場合に役立ちます。

プロパティ値の取得

ICultureInsensitiveProperty プロパティから値を取得するには、次のようにします。

string title = titleProperty.GetValue<string>();

ICultureSensitiveProperty プロパティから値を取得するには、カルチャも指定する必要があります。 この例では、英語での説明を取得します。

CultureInfo enUs = CultureInfo.GetCultureInfo("en-US");

string description = descriptionProperty.GetValue<string>(enUs);

プロパティ値の設定

ICultureInsensitiveProperty プロパティに値を設定するには、次のようにします。

titleProperty.SetValue("a new title");

ICultureSensitiveProperty プロパティに値を設定するには、カルチャも指定する必要があります。

CultureInfo enUs = CultureInfo.GetCultureInfo("en-US");

descriptionProperty.SetValue(enUs, "a new description");

複数値のプロパティ

プロパティが複数値の場合、そのタイプは配列タイプに変更されます。 MultiDescription が複数値でカルチャに依存する string プロパティであると仮定すると、プロパティ値の取得は次のようになります。

ICultureSensitiveProperty property = entity.GetProperty<ICultureSensitiveProperty>("MultiDescription");

CultureInfo enUs = CultureInfo.GetCultureInfo("en-US");

string[] values = property.GetValue<string[]>(enUs);

[!注] これは、プロパティ定義のIsMultiValueプロパティと関連があります。

エンティティでのプロパティ値の直接使用

エンティティ (IEntity) からプロパティ値を直接取得および設定することもできます。 これは、内部でプロパティがフェッチされてそのプロパティの値が返されるまたは設定されるショートカットとして機能します。

値の取得

ICultureInsensitiveProperty プロパティから値を取得するには、次のようにします。

string title = entity.GetPropertyValue<string>("Title");

ICultureSensitiveProperty プロパティから値を取得するには、カルチャも指定する必要があります。

CultureInfo enUs = CultureInfo.GetCultureInfo("en-US");
string description = entity.GetPropertyValue<string>("Description", enUs);

[!警告] プロパティが存在しない場合や読み込まれていない場合は、要求された方 (ここでは string) の既定値が返されます。 null になり得る型 (プリミティブ型の場合は long ではなく long?) を渡すことをお勧めします。そうすれば、null が返されます。 そうしない場合、プリミティブの既定値に混乱が生じる可能性があります。

[!警告] エンティティからプロパティ値を直接取得する場合は、どの型のプロパティが使用されているかに注意してください。 カルチャに依存するプロパティの場合は、必ずカルチャを渡してください。そうしない場合は、InvalidOperationException 例外がスローされます。

値の設定

ICultureInsensitiveProperty プロパティに値を設定するには、次のようにします。

entity.SetPropertyValue("Title", "a new title");

ICultureSensitiveProperty プロパティに値を設定するには、カルチャも指定する必要があります。

CultureInfo enUs = CultureInfo.GetCultureInfo("en-US");

entity.SetPropertyValue("Description", enUs, "a new description");

[!警告] プロパティが存在しない場合や読み込まれていない場合は、SDK が PropertyNotFoundExceptionをスローします。

[!警告] プロパティ値の取得と同様に、エンティティからプロパティ値を直接取得する場合は、どのタイプのプロパティが使用されているかに注意してください。

この記事を改善するための提案がある場合は、 お知らせください!