コード例 #1
0
ファイル: MefConfig.cs プロジェクト: PopMedNet-Team/popmednet
        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());
            }
        }
コード例 #2
0
        public LppMvcComposableApplication()
        {
            if (_composition == null)
            {
                _composition = MefConfig.RegisterMef();
            }

            _composition.RootScope.SatisfyImportsOnce(this);

            this.BeginRequest += OnBeginRequest;
            this.EndRequest   += OnEndRequest;
#if (!DEBUG)
            this.Error += OnError;
#endif
        }