型付けされたエンティティ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
型付きエンティティは、実際のプロパティ値にマッピングされた宣言されたプロパティを通じて、一般的に使われるプロパティや関係に容易にアクセスできるようにします。
箱から出して、SDKによって出荷される以下のタイプ化されたエンティティが提供されます:
- IAssetEntity
- IFileEntity
- IMailTemplateEntity
- ISettingEntity
- IUserEntity
- IUserGroupEntity
新しい型付きエンティティタイプを作成する
すべての型付きエンティティインターフェースはITypedEntityインターフェースから継承しなければなりません。インターフェースの実装は不要で、初回使用時に実行時に生成・キャッシュされます。
性質
宣言されたプロパティは、値をキャストする際の例外を避けるために、Content Hubがサポートする型(string、bool、int、long、decimal、DateTime、DateTimeOffset、JToken、...)を使用するべきです。
宣言されたプロパティ名は、エンティティ定義自体で定義されたプロパティ名と一致しているはずです。命名スキーマや命名規則の関係でそれができない場合は、TypedEntityPropertyAttributeを使って上書きすることが可能です。
もしプロパティが読み取り専用であるべきなら、セッターを省略するのは正当です。
文化依存性は一般的なCultureSensitive
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
関係
リレーションはジェネリック型ToOneRelation
プロパティについては、リレーションの宣言されたプロパティ名はエンティティ定義で指定された名前と同等であるべきです。それができない場合は、TypedEntityRelationAttributeもここで名前を上書きできます。
public interface ISampleEntity : ITypedEntity
{
ToOneRelation
ToManyRelation
既存の型付けエンティティを拡張する
既存の型付きエンティティタイプを拡張したい場合は、単にそのタイプから継承し、上記のように自分のプロパティや関係を追加するだけで可能です。
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
await MClient.Entities.SaveAsync(typedAsset);