public static void Start() { // Register the CompositionContainerLifetimeHttpModule HttpModule. // This makes sure everything is cleaned up correctly after each request. CompositionContainerLifetimeHttpModule.Register(); // Create MEF catalog based on the contents of ~/bin. // // Note that any class in the referenced assemblies implementing in "IController" // is automatically exported to MEF. There is no need for explicit [Export] attributes // on ASP.NET MVC controllers. When implementing multiple constructors ensure that // there is one constructor marked with the [ImportingConstructor] attribute. TypeCatalog typeCatalog = new TypeCatalog(typeof(Tridion.Extensions.DynamicDelivery.Factories.TridionBinaryFactory2011), typeof(Tridion.Extensions.DynamicDelivery.Factories.TridionPageFactory), typeof(Tridion.Extensions.DynamicDelivery.Factories.TridionLinkFactory)); DirectoryCatalog dirCatalog = new DirectoryCatalog(@"bin\mef"); DirectoryCatalog dirCatalog2 = new DirectoryCatalog(@"D:\Temp\Test"); MvcApplicationRegistry mvcAppRegistry = null; try { mvcAppRegistry = new MvcApplicationRegistry(); } catch (Exception ex) { Trace.WriteLine("caught exception " + ex.Message); } ConventionCatalog conventionCatalog = new ConventionCatalog(mvcAppRegistry); catalog = new AggregateCatalog( dirCatalog, conventionCatalog ); // Note: add your own (convention)catalogs here if needed. // Tell MVC3 to use MEF as its dependency resolver. var dependencyResolver = new CompositionDependencyResolver(catalog); DependencyResolver.SetResolver(dependencyResolver); // Tell MVC3 to resolve dependencies in controllers ControllerBuilder.Current.SetControllerFactory( new DefaultControllerFactory( new CompositionControllerActivator(dependencyResolver))); // Tell MVC3 to resolve dependencies in filters FilterProviders.Providers.Remove(FilterProviders.Providers.Single(f => f is FilterAttributeFilterProvider)); FilterProviders.Providers.Add(new CompositionFilterAttributeFilterProvider(dependencyResolver)); // Tell MVC3 to resolve dependencies in model validators ModelValidatorProviders.Providers.Remove(ModelValidatorProviders.Providers.OfType<DataAnnotationsModelValidatorProvider>().Single()); ModelValidatorProviders.Providers.Add( new CompositionDataAnnotationsModelValidatorProvider(dependencyResolver)); // Tell MVC3 to resolve model binders through MEF. Note that a model binder should be decorated // with [ModelBinderExport]. ModelBinderProviders.BinderProviders.Add( new CompositionModelBinderProvider(dependencyResolver)); }
public static void Run() { var locator = new PartRegistryLocator(new IPartRegistry<DefaultConventionContractService>[] { new ConfigurationPartRegistry("mef.configuration"), new ExtensionRegistry() }); var conventionCatalog = new ConventionCatalog(locator); var compositionContainer = new CompositionContainer(conventionCatalog); var part = new ConventionPart<Bootstrapper>(); compositionContainer.ComposeParts(part); var bootstrapper = part.Imports.First(); bootstrapper.Main.Run(); }