static ModelBuilderPipeline()
{
using (new Tracer())
{
IList<IModelBuilder> modelBuilders = new List<IModelBuilder>();
try
{
ModelBuilderPipelineConfiguration config = (ModelBuilderPipelineConfiguration)ConfigurationManager.GetSection(ModelBuilderPipelineConfiguration.SectionName);
if (config != null)
{
foreach (ModelBuilderSettings modelBuilderSettings in config.ModelBuilders)
{
Type modelBuilderType = Type.GetType(modelBuilderSettings.Type, throwOnError: true, ignoreCase: true);
IModelBuilder modelBuilder = (IModelBuilder)Activator.CreateInstance(modelBuilderType);
modelBuilders.Add(modelBuilder);
}
}
}
catch (Exception ex)
{
// Throwing exceptions from a class constructor results in rather cryptic error messages, so we handle the exception here.
Log.Error(ex);
Log.Warn("An error occurred while initializing the Model Builder Pipeline. Using the Default Model Builder.");
modelBuilders.Clear();
}
if (modelBuilders.Count == 0)
{
modelBuilders.Add(new DefaultModelBuilder());
}
ModelBuilders = modelBuilders;
}
}