1. 型付きエンティティ

型指定されたエンティティ

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

このページの翻訳は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; }
}

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

型指定されたエンティティは、TypedEntityFactoryIMClient インスタンスに対して使用して解決できます。

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);
この記事を改善するための提案がある場合は、 お知らせください!