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));
            }
        }
Esempio n. 2
0
        // 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();
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
 protected override void RegisterViewSourceProviders(TinyIoC.TinyIoCContainer container, System.Collections.Generic.IEnumerable<System.Type> viewSourceProviderTypes)
 {
     container.RegisterMultiple<IViewSourceProvider>(
         new List<Type> { typeof(FileSystemViewSourceProvider) })
         .AsSingleton();
 }