public DslModel( IDslParser dslParser, ILogProvider logProvider, DslContainer dslContainer, IIndex <Type, IEnumerable <IConceptMacro> > macros, IEnumerable <IConceptMacro> macroPrototypes, IEnumerable <IConceptInfo> conceptPrototypes, IMacroOrderRepository macroOrderRepository, IDslModelFile dslModelFile) { _dslParser = dslParser; _performanceLogger = logProvider.GetLogger("Performance"); _logger = logProvider.GetLogger("DslModel"); _evaluatorsOrderLogger = logProvider.GetLogger("MacroEvaluatorsOrder"); _dslModelConceptsLogger = logProvider.GetLogger("DslModelConcepts"); _initializedDslContainer = new Lazy <DslContainer>(() => Initialize(dslContainer)); _macros = macros; _macroTypes = macroPrototypes.Select(macro => macro.GetType()); _conceptTypes = conceptPrototypes.Select(conceptInfo => conceptInfo.GetType()); _macroOrderRepository = macroOrderRepository; _dslModelFile = dslModelFile; }