/// <summary> /// Bootstraps System.ComponentModel.Composition based application components. /// </summary> public static void Bootstrap() { // 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. var catalog = new AggregateCatalog( new DirectoryCatalog("bin"), new ConventionCatalog(new MvcApplicationRegistry())); // 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 CompositionControllerFactory( 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 void Configure() { // 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. var catalog = new AggregateCatalog( new DirectoryCatalog("bin"), new ConventionCatalog(new MvcApplicationRegistry())); // 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. Model binders must be decorated with [ModelBinderExport]. ModelBinderProviders.BinderProviders.Add(new CompositionModelBinderProvider(dependencyResolver)); }
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 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 RegisterDependencies() { var container = new CompositionContainer(); var resolver = new CompositionDependencyResolver(container); DependencyResolver.SetResolver(resolver); resolver.Register<IHttpContextFactory>(new HttpContextFactory()); resolver.Register<IFileSystem>(new FileSystem(), "fileSystem"); resolver.Register<IFileSystem>(new WebFileSystem()); resolver.Register<ITextTransform>(new MarkdownTextTransform(new MarkdownSharp.Markdown()), "markdown"); }
public static void RegisterDependencies() { var container = new CompositionContainer(); var resolver = new CompositionDependencyResolver(container); DependencyResolver.SetResolver(resolver); resolver.Register <IHttpContextFactory>(new HttpContextFactory()); resolver.Register <IFileSystem>(new FileSystem(), "fileSystem"); resolver.Register <IFileSystem>(new WebFileSystem()); resolver.Register <ITextTransform>(new MarkdownTextTransform(new MarkdownSharp.Markdown()), "markdown"); }
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. var catalog = new AggregateCatalog( new DirectoryCatalog(@"bin\PlugIns\"), // see comment 1 new ConventionCatalog(new MvcApplicationRegistry())); // Note: add your own (convention)catalogs here if needed. // Comment 1 // Andy - change the directory from "bin" to "bin\Plugins" - // Use the PlugIns diectory to hold the MEF plug ins, including all dependent dlls, // and use probing to allow the executing assembly to locate the dependent assemblies. // That way, the plug in dlls do not deleted on each rebuild. // However, it requires the PlugIns folder to be manually created, and plug in dlls need to be manually added in there. // 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 CompositionControllerFactory( 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 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. var catalog = new AggregateCatalog( new DirectoryCatalog("bin"), new ConventionCatalog(new MvcApplicationRegistry())); // 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)); }
/// <summary> /// Initializes a new instance of the <see cref="CompositionModelBinderProvider"/> class. /// </summary> /// <param name="resolver">The resolver.</param> public CompositionModelBinderProvider(CompositionDependencyResolver resolver) { this.resolver = resolver; }
internal SelfExportDescriptorProvider(CompositionDependencyResolver self) => this.self = self;