private static void ConfigureContainer(out CompositionContainer container, out CompositionScopingService service) { var componentsFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"); var reg = new RegistrationBuilder(); reg .ForTypesDerivedFrom <IController>() .AddMetadata(ExportScope.Key, TransactionScope.Id) .Export <IController>() .Export(); var rootCatalog = new DirectoryCatalog(componentsFolder, reg); try { var mms = rootCatalog.DiscoverModules(); service = new CompositionScopingService(mms.Catalog, mms.ExplicitExports, new String[] { TransactionScope.Id }); container = new CompositionContainer(mms.Catalog); } catch (ReflectionTypeLoadException rtle) { var sb = new StringBuilder(); sb.Append(rtle.UnwindException() + "<br/><br/>"); foreach (var e in rtle.LoaderExceptions) { sb.Append(e.UnwindException() + "<br/><br/>"); } throw new ReflectionTypeLoadException(rtle.Types, rtle.LoaderExceptions, sb.ToString()); } }
public LppMvcComposableApplication() { if (_composition == null) { _composition = MefConfig.RegisterMef(); } _composition.RootScope.SatisfyImportsOnce(this); this.BeginRequest += OnBeginRequest; this.EndRequest += OnEndRequest; #if (!DEBUG) this.Error += OnError; #endif }