/// <summary>
        /// Creates new instance with explicitly defined parameters and no support for snaphot.
        /// </summary>
        /// <param name="builder">The constructor parameters builder.</param>
        public ReflectionAggregateRootFactory(ReflectionAggregateRootFactoryBuilder builder)
        {
            Ensure.NotNull(builder, "builder");
            historyParameters = builder.Parameters;

            List <Type> internalParameters = new List <Type>()
            {
                ReflectionAggregateRootFactoryBuilder.Parameter.KeyType,
                ReflectionAggregateRootFactoryBuilder.Parameter.HistoryType
            };

            historyConstructorInfo = CreateConstructorInfo(builder.Parameters, internalParameters);
        }
        /// <summary>
        /// Creates new instance with explicitly defined parameters for standart/history constructor and for snapshot constructor.
        /// </summary>
        /// <param name="historyBuilder">The standart/history constructor parameters builder.</param>
        /// <param name="snapshotBuilder">The snapshot constructor parameters builder.</param>
        public ReflectionAggregateRootFactory(ReflectionAggregateRootFactoryBuilder historyBuilder, ReflectionAggregateRootFactoryBuilder snapshotBuilder)
            : this(historyBuilder)
        {
            Ensure.NotNull(snapshotBuilder, "snapshotBuilder");
            snapshotParameters = snapshotBuilder.Parameters;

            List <Type> internalParameters = new List <Type>()
            {
                ReflectionAggregateRootFactoryBuilder.Parameter.KeyType,
                ReflectionAggregateRootFactoryBuilder.Parameter.SnapshotType,
                ReflectionAggregateRootFactoryBuilder.Parameter.HistoryType
            };

            snapshotConstructorInfo = CreateConstructorInfo(snapshotBuilder.Parameters, internalParameters);
        }