public void CanConfigureLifestyle()
        {
            store.Register((p) =>
            {
                p.Service <IService>()
                .Implementor <ClassWithDependencyOnItsOwnService>()
                .Lifestyle.Singleton();
                p.Service <IService>()
                .Implementor <ClassWithNoDependencies>()
                .Lifestyle.Singleton();
            });

            Assert.DoesNotThrow(() => container.Resolve <IService>());
        }
示例#2
0
        public void SpecifyLifestyle()
        {
            var store = new ComponentStore();

            /*
             * After Implementor was set Lifestyle can be specified through:
             * .Lifestyle.Singleton
             */
            store.Register(p => p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>()
                           .Lifestyle.Singleton());

            //or:

            store.Register(p => p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>()
                           .Lifestyle.Transient());
        }
        public void CanResolveSpecificGenericClass()
        {
            store.Register(p =>
                           p.Service <GenericClass <string> >()
                           .Implementor <GenericClass <string> >());

            container.Resolve <GenericClass <string> >();
        }
        public void CanResolveSpecificGenericClass()
        {
            store.Register(p =>
                           p.Service <GenericClass <string> >()
                           .Implementor <GenericClass <string> >());

            Assert.DoesNotThrow(() => container.Resolve <GenericClass <string> >());
        }
示例#5
0
        public void ContainerSetup()
        {
            var store = new ComponentStore();

            //Add components to the store.
            store.Register(p => p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>());
            //Create the container
            var container = new PandoraContainer(store);
        }
示例#6
0
        public void RegisterSimpleTypeFluently()
        {
            var store = new ComponentStore();

            /*
             * Register ClassWithNoDependencies implementing
             * IService with default Lifestyle and no Parameters
             */
            store.Register(p => p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>());
        }
示例#7
0
        public void CustomLifestyle()
        {
            /*
             * Any instance implementing ILifestyle can be passed to the container.
             */
            var store       = new ComponentStore();
            var myLifestyle = new CustomLifestyle();

            store.Register(p => p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>()
                           .Lifestyle.Custom(myLifestyle));
        }
示例#8
0
        public void RegisterMultipleServicesInOneClosure()
        {
            var store = new ComponentStore();

            store.Register(p =>
            {
                p.Service <IService>()
                .Implementor <ClassWithDependencyOnItsOwnService>();
                p.Service <IService>()
                .Implementor <ClassWithNoDependencies>();
            });
        }
示例#9
0
        public void RegisterNamedType()
        {
            var store = new ComponentStore();

            /*
             * Every registration can be assigned a unique name to
             * be able to retrieve it in case there is more than one IService
             * See PandoraContainer.Resolve<T>(string)
             */
            store.Register(p => p.Service <IService>("componentName")
                           .Implementor <ClassWithNoDependencies>());
        }
示例#10
0
        /*
         * This also means that if a component requires a string this String has to be specified explicitly
         */
        public void SpecifyStringParameter()
        {
            var store    = new ComponentStore();
            var myString = "The string to be passed to ClassDependingOnAString";

            store.Register(p =>
            {
                p.Service <ClassDependingOnAString>()
                .Implementor <ClassDependingOnAString>()
                .Parameters("dependency").Equals("stringComponentName");
                p.Service <string>("stringComponentName")
                .Instance(myString);
            });
        }
        public void CanRegisterMultipleParametersInARow()
        {
            store = new ComponentStore();
            store.Register(p => p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>()
                           .Parameters("test").Set("test")
                           .Parameters("repository").Set("something"));


            var registrations = store.GetRegistrationsForService <IService>().First();

            Assert.NotNull(registrations.Parameters["test"]);
            Assert.NotNull(registrations.Parameters["repository"]);
        }
示例#12
0
        public void ParameterSpecification()
        {
            var store = new ComponentStore();

            /*
             * Any number of parameters can be specified after .Implementor
             * Note: Parameter values have to be registered components in the container.
             */

            store.Register(p =>
                           p.Service <IService>()
                           .Implementor <ClassWithNoDependencies>()
                           .Parameters("param1").Set("componentName")
                           .Parameters("param2").Set("somethingElse"));
        }
        public void CanInstantiateClassThatDependsOnAString()
        {
            var store = new ComponentStore();
            store.Register(
                p =>
                {
                    p.Service<ClassDependingOnAString>()
                        .Implementor<ClassDependingOnAString>()
                        .Parameters("string1");
                    p.Service<string>("string1")
                        .Instance("Hello World");
                });
            var container = new PandoraContainer(store);

            var resolve = container.Resolve<ClassDependingOnAString>();
            Assert.Equal("Hello World", resolve.Dependency);
        }
示例#14
0
        public void CanInstantiateClassThatDependsOnAString()
        {
            var store = new ComponentStore();

            store.Register(
                p =>
            {
                p.Service <ClassDependingOnAString>()
                .Implementor <ClassDependingOnAString>()
                .Parameters("string1");
                p.Service <string>("string1")
                .Instance("Hello World");
            });
            var container = new PandoraContainer(store);

            var resolve = container.Resolve <ClassDependingOnAString>();

            Assert.Equal("Hello World", resolve.Dependency);
        }
        public void CanRegisterMultipleParametersInARow()
        {
            store = new ComponentStore();
            store.Register(p => p.Service<IService>()
                                    .Implementor<ClassWithNoDependencies>()
                                    .Parameters("test").Set("test")
                                    .Parameters("repository").Set("something"));

            var registrations = store.GetRegistrationsForService<IService>().First();
            Assert.NotNull(registrations.Parameters["test"]);
            Assert.NotNull(registrations.Parameters["repository"]);
        }