public static ImpressionEngine Create(string templatePath, IPropertyBag bag, ITemplateCache templateCache) { // create container and register it, in itself IContainer container = new Container(); container.Register <IContainer>(delegate { return(container); }); // singleton objects, only create once IReflector reflector = null; IFilterRunner filterRunner = null; ITagFactory tagFactory = null; container.Register <ITemplateCache>(delegate { return(templateCache); }); container.Register <IReflector>(delegate { if (reflector == null) { reflector = new Reflector(); } return(reflector); }); container.Register <IFilterRunner>(delegate { if (filterRunner == null) { filterRunner = new FilterRunner(); } return(filterRunner); }); container.Register <ITagFactory>(delegate { if (tagFactory == null) { tagFactory = container.Resolve <TagFactory>(); } return(tagFactory); }); // instance scoped, create new each time container.Register <ITemplateParser, TemplateParser>(); ImpressionEngine ie = container.Resolve <ImpressionEngine>(); if (!string.IsNullOrEmpty(templatePath)) { ie.LoadTemplate(templatePath, true); } if (bag != null) { ie.LoadBag(bag); } return(ie); }
public static ImpressionEngine Create(string templatePath, IPropertyBag bag, ITemplateCache templateCache) { // create container and register it, in itself IContainer container = new Container(); container.Register<IContainer>(delegate { return container; }); // singleton objects, only create once IReflector reflector = null; IFilterRunner filterRunner = null; ITagFactory tagFactory = null; container.Register<ITemplateCache>(delegate { return templateCache; }); container.Register<IReflector>( delegate { if (reflector == null) reflector = new Reflector(); return reflector; } ); container.Register<IFilterRunner>(delegate { if (filterRunner == null) filterRunner = new FilterRunner(); return filterRunner; }); container.Register<ITagFactory>(delegate { if (tagFactory == null) tagFactory = container.Resolve<TagFactory>(); return tagFactory; }); // instance scoped, create new each time container.Register<ITemplateParser, TemplateParser>(); ImpressionEngine ie = container.Resolve<ImpressionEngine>(); if (!string.IsNullOrEmpty(templatePath)) { ie.LoadTemplate(templatePath, true); } if (bag != null) { ie.LoadBag(bag); } return ie; }