private static IConfigurable CreateGenerator <IdType>(IdGeneratorParams parameters) { switch (parameters.Strategy) { case IdGeneratorStrategy.TableHiLow: { TableHiLoGenerator generator = CreateTableHiLoGenerator((TableIdGeneratorParams)parameters); return(new IdGeneratorNHibernateAdaptor <IdType>(generator)); } case IdGeneratorStrategy.MinimalGap: { return(CreateMinimalGapTableIdGenerator((TableIdGeneratorParams)parameters)); } default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Create the desired <see cref="INHibernateIdGenerator{T}"/> as determined by the <see cref="IdGeneratorParams"/> /// </summary> /// <remarks> /// To create a table backed id generator, you need to supply as the <paramref name="parameters"/>, /// an instance of the <see cref="TableIdGeneratorParams"/> class /// </remarks> /// <typeparam name="IdType">The type of the id that is to be generate</typeparam> /// <param name="parameters">Values that select and configure the a desired <see cref="INHibernateIdGenerator{T}"/></param> public virtual INHibernateIdGenerator <IdType> Create <IdType>(IdGeneratorParams parameters) { IConfigurable generator = CreateGenerator <IdType>(parameters); return((INHibernateIdGenerator <IdType>)generator); }