public static IBuildStrategyCompiler Clone(this IBuildConfiguration configuration)
{
if (configuration == null)
{
throw new ArgumentNullException(nameof(configuration));
}
var compiler = new BuildStrategyCompiler
{
ConstructorResolver = configuration.ConstructorResolver
};
foreach (var executeOrderRule in configuration.ExecuteOrderRules)
{
compiler.ExecuteOrderRules.Add(executeOrderRule);
}
foreach (var ignoreRule in configuration.IgnoreRules)
{
compiler.IgnoreRules.Add(ignoreRule);
}
foreach (var typeCreator in configuration.TypeCreators)
{
compiler.TypeCreators.Add(typeCreator);
}
foreach (var valueGenerator in configuration.ValueGenerators)
{
compiler.ValueGenerators.Add(valueGenerator);
}
return compiler;
}
}