public static void ProcessRegistrations(TinyIoC.TinyIoCContainer container) { var applicationRegistrationImplementations = AppDomain.CurrentDomain.GetAssemblies() .Where(a => a.GetReferencedAssemblies().Contains(typeof (ApplicationRegistar).Assembly.GetName()) || a == typeof (ApplicationRegistar).Assembly) .SelectMany(t => t.GetTypes()) .Where(t => t.Implements(typeof (IApplicationRegistration))) .ToList(); container.RegisterMultiple<IApplicationRegistration>(applicationRegistrationImplementations); var applicationRegistrations = container.ResolveAll<IApplicationRegistration>().ToList(); foreach (var typeRegistration in applicationRegistrations.SelectMany(ar => ar.TypeRegistrations)) { container.Register(typeRegistration.RegistrationType, typeRegistration.InstanceType); } foreach (var instanceRegistration in applicationRegistrations.SelectMany(ar => ar.InstanceRegistrations)) { container.Register(instanceRegistration.RegistrationType, instanceRegistration.Instance); } foreach (var collectionRegistration in applicationRegistrations.SelectMany(ar => ar.CollectionRegistration).GroupBy(cr => cr.RegistrationType)) { container.RegisterMultiple(collectionRegistration.Key, collectionRegistration.SelectMany(c => c.InstanceTypes)); } }
// Overriding this just to show how it works, not actually necessary as autoregister // takes care of it all. protected override void ConfigureApplicationContainer(TinyIoC.TinyIoCContainer container) { // We don't call base because we don't want autoregister // we just register our one known dependency as an application level singleton container.Register<IApplicationDependency, ApplicationDependencyClass>().AsSingleton(); //This changes come from Pull Request #57 container.RegisterMultiple<IViewEngineRegistry>(new[] { //typeof (SparkViewRegistry), typeof (RazorViewRegistry), typeof (NDjangoViewRegistry) }).AsSingleton(); }
protected override void ApplicationStartup(TinyIoC.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); var documentStore = new EmbeddableDocumentStore { DataDirectory = "Data" }; documentStore.Configuration.DefaultStorageTypeName = "munin"; documentStore.Initialize(); container.Register<IDocumentStore>(documentStore); container.Register<IDocumentSession>((c, o) => c.Resolve<IDocumentStore>().OpenSession()); container.Register<IObjectMapper, ObjectMapper>().AsSingleton(); container.Register<IHasher, Sha256Hasher>().AsSingleton(); container.Register<IEnvironment, Environment>().AsSingleton(); container.RegisterMultiple<IDeploymentStep>(new [] { typeof(DownloadPackageStep), typeof(UnpackPackageStep), typeof(DeployApplicationStep) }).AsMultiInstance(); container.Register<IDeploymentPipeline, DeploymentPipeline>().AsMultiInstance(); container.Register<IDeploymentWatcher, DeploymentWatcher>(); container.Register<IWebClient, WebClient>(); container.Resolve<IDeploymentWatcher>().Start(); }
protected override void RegisterViewSourceProviders(TinyIoC.TinyIoCContainer container, System.Collections.Generic.IEnumerable<System.Type> viewSourceProviderTypes) { container.RegisterMultiple<IViewSourceProvider>( new List<Type> { typeof(FileSystemViewSourceProvider) }) .AsSingleton(); }