1. WebクライアントSDK

型付きエンティティ

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

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

型指定されたエンティティを使用すると、実際のプロパティ値にマップされた宣言されたプロパティを通じて、一般的に使用されるプロパティまたは関係に簡単にアクセスできます。

すぐに使用できる、次の型指定されたエンティティがSDKによって出荷されます。

  • IAssetEntity

  • IFileEntity

  • IMailTemplateEntity

  • ISettingEntity

  • IUserEntity

  • IUserGroupEntity

新しい型指定されたエンティティ型を作成する

すべての型付きエンティティ インターフェイスは、ITypedEntityインターフェイスから継承する必要があります。インターフェイスの実装は、最初に使用されるときに実行時に生成およびキャッシュされるため、必須ではありません。

プロパティ

宣言されたプロパティでは、Content Hubでサポートされている型 (stringboolintlongdecimalDateTimeDateTimeOffsetJToken、...) を使用して、値をキャストする際の例外を回避する必要があります。

宣言されたプロパティ名は、エンティティ定義自体で定義されているプロパティ名と一致する必要があります。命名スキーマまたは命名規則が原因でそれが不可能な場合は、TypedEntityPropertyAttributeを使用して上書きすることができます。

プロパティが読み取り専用であると想定されている場合は、セッターを省略するのが正当です。

カルチャに依存したプロパティは、ジェネリックCultureSensitive<T> 型を使用して宣言できます。型と名前に関する同じルールが、これらのプロパティにも適用されます。

public interface ISampleEntity : ITypedEntity
{
  string StringProperty { get; set; }
  decimal DecimalProperty { get; set; }

  [TypedEntityProperty("Some.Different.Property.Name")]
  string StringPropertyNameOverridden { get; set; }

  string ReadonlyStringProperty { get; }

  string ReadonlyStringProperty { get; }

  CultureSensitive<string> CultureSensitiveString { get; }
}

関係

リレーションは、ジェネリックToOneRelation<T> 型とToManyRelation<T> 型を使用して宣言できます。

プロパティに関しては、リレーションの宣言されたプロパティ名は、エンティティ定義で指定された名前と同等である必要があります。それが不可能な場合、TypedEntityRelationAttributeここでも名前を上書きすることを許可します。

public interface ISampleEntity : ITypedEntity
{
  ToOneRelation<IChildToOneParentRelation> TestToTest { get; }

  ToManyRelation<IChildToManyParentsRelation> TestToTests { get; }
}

既存の型付きエンティティの拡張

既存の型付きエンティティタイプを拡張する場合は、単にそれを継承し、上記で指定したように独自のプロパティとリレーションを追加することで拡張できます。

public interface ICustomAssetEntity : IAssetEntity
{
  string CustomProperty { get;set; }
}

型指定されたエンティティのインスタンスを作成する

型付きエンティティは、IMClientインスタンスのTypedEntityFactoryを使用して解決できます。

var culture = new CultureInfo("en-US");

// Load asset from Content Hub instance 
var asset = await MClient.Entities.GetAsync(id);

// Turn received IEntity into typed IAssetEntity
var typedAsset = MClient.TypedEntityFactory.FromEntity<IAssetEntity>(asset);
typedAsset.Title = "New title";
typedAsset.Description[culture] = "English description";

await MClient.Entities.SaveAsync(typedAsset);
この記事を改善するための提案がある場合は、 お知らせください!