---
title: "カスタムIDジェネレーターを実装してください"
slug: "implement-a-custom-id-generator"
abstract: ""
---
# カスタムIDジェネレーターを実装してください

IDジェネレーターは文字列の形で一意の外部IDを受け取り、一意IDを返します。これはアイテムID(例:GUID)として使用できます。デフォルトの実装はMD5ハッシュアルゴリズムに基づいています。

> !注Sitecore IDは一意でなければならず、IDジェネレーターからの出力がSitecore IDとして使われるため、衝突を避けるために常に一意の外部IDの前に任意の固定文字列を付けることが重要です。例えば、外部システムリポジトリ内の製造業者のIDは、製品の範囲内で一意であっても、製品のIDと重複することがあります。したがって、IDジェネレーターへの入力は以下の形式でなければなりません:それぞれManufacturer + ManufacturerIDおよびProducts + ProductIDです。

カスタムIDジェネレーターを使用するには:

1.  新しいIDジェネレータークラスを作成し、IIdGeneratorインターフェースを実装します。
    
    インターフェースには2つのパラメータを受け入れるStringToIDメソッドが1つあります:
    
    -   特定のエンティティの外部IDの値を含む文字列です。
        
    -   異なるエンティティで使用される同一の値間の衝突を避けるために、一意のプレフィックスを含む文字列。
        
        このメソッドは結果としてGUIDを返し、それを使ってSitecore内の対応する外部エンティティの項目に割り当てられます。
        
    
    /// <summary>
    /// Defines interface for id generator.
    /// </summary>
    public interface IIdGenerator
    {
     /// <summary>
     /// String to Sitecore ID.
     /// </summary>
     /// <param name="value">The value.</param>
     /// <param name="prefix">The prefix.</param>
     /// <returns>The generated ID</returns>
     NotNull
     ID StringToID(NotNull string value, NotNull string prefix);
    }
    
2.  カスタムIDジェネレータークラスをSitecore.Commerce.Products.configファイルに登録してください。
    
    これを行うには、idGenerator要素のタイプ属性値をカスタムIDジェネレータータイプに変更します。
    
    <idGenerator type="Sitecore.Commerce.Data.Products.Md5IdGenerator, Sitecore.Commerce" singleInstance="true" />
    The default implementation is based on the MD5 hash algorithm provided in .NET. The source code is listed below:
    /// <summary>
    /// Defines default implementation of id generator.
    /// </summary>
    public class Md5IdGenerator : IIdGenerator
    {
     /// <summary>
     /// String to Sitecore ID.
     /// </summary>
     /// <param name="value">The value.</param>
     /// <param name="prefix">The prefix.</param>
     /// <returns>The generated ID</returns>
    
     public ID StringToID(string value, string prefix)
     {
     Assert.ArgumentNotNull(value, "value");
     Assert.ArgumentNotNull(prefix, "prefix");
     // Create a new instance of the MD5CryptoServiceProvider object.
     var md5Hasher = MD5.Create();
     // Convert the input string to a byte array and compute the hash.
     var data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(prefix + value));
     return new ID(new Guid(data));
     }
    }