カスタム参照データ型の作成

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

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

必要に応じて、追加の参照データ型を作成できます。参照データ型を作成するには:

  1. カスタム共通データ型を作成します。共通データはカルチャに依存せず、翻訳は必要ありません。クラスがSerializableとしてマークされていることを確認します。

    namespace Documentation
    {
        [Serializable]
        public class AiportCommonData
        {
            public int NumberOfRunways { get; set; }
        }
    }
  2. カスタム カルチャ データ型を作成します。クラスがSerializableとしてマークされていることを確認します。

    namespace Documentation
    {
        [Serializable]
        public class AirportCultureData
        {
            public string AirportName { get; set; }
        }
    }
  3. 定義タイプ名を選択します。定義タイプ名は、中央の場所に格納することをお勧めします。たとえば、Sitecoreのデフォルトの定義タイプ名はSitecore.Marketing.Operations.Xdb.ReferenceData.Model.Definitions.DefinitionTypeNamesに保存されます。

  4. 示されているように、カスタム定義タイプを使用します。型が存在しない場合は、EnsureDefinitionTypeAsync() メソッドが呼び出されたときに作成されます。

    using Sitecore.DependencyInjection;
    using Sitecore.Xdb.ReferenceData.Client;
    using Sitecore.Marketing.Operations.Xdb.ReferenceData.Model;
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Sitecore.Xdb.ReferenceData.Core;
    
    namespace Documentation
    {
        public class RefDataCustomDefinitionData
        {
            public async void Example()
            {
                var client = ServiceLocator.ServiceProvider.GetService(typeof(IReferenceDataClient)) as IReferenceDataClient;
    
                DefinitionTypeKey definitionType = await client.EnsureDefinitionTypeAsync("Airport Codes"); // Do not hardcode defintion type name like this
    
                var definitionKey = new DefinitionKey("LHR", definitionType, 1);
                var definition = new Definition<AiportCommonData, AirportCultureData>(definitionKey)
                {
                    IsActive = true,
                    CommonData = new AiportCommonData
                    {
                        NumberOfRunways = 5
                    }
                };
    
                definition.CultureData.Add(new CultureInfo("en"), new AirportCultureData() { AirportName = "Heathrow Airport" });
                definition.CultureData.Add(new CultureInfo("dk"), new AirportCultureData() { AirportName = "Danish Heathrow Airport" });
    
                await client.SaveAsync(definition);
            }
        }
    
        [Serializable]
        public class AirportCultureData
        {
            public string AirportName { get; set; }
        }
    
        [Serializable]
        public class AiportCommonData
        {
            public int NumberOfRunways { get; set; }
        }
    }
この記事を改善するための提案がある場合は、 お知らせください!