Пример #1
0
        public void MembersThat_Match()
        {
            Func <MemberInfo, bool> filter = MembersThat.Match(m => m.Name == "Count");

            var countMember        = typeof(MemberClass).GetProperty("Count");
            var customStringMember = typeof(MemberClass).GetProperty("CustomString");

            Assert.True(filter(countMember));
            Assert.False(filter(customStringMember));
        }
Пример #2
0
        public void MethodInjection_Inject_Members_That_Are_Method_With_Filter()
        {
            var container = new DependencyInjectionContainer();

            container.Configure(c =>
            {
                c.Export <BasicService>().As <IBasicService>();
                c.Export <MethodInjectionClass>().ImportMembers(MembersThat.AreMethod(m => m.Name.StartsWith("Some")), true);
            });

            var instance = container.Locate <MethodInjectionClass>();

            Assert.NotNull(instance);
            Assert.Null(instance.BasicService);

            Assert.NotNull(instance.SecondService);
            Assert.IsType <BasicService>(instance.SecondService);
        }
Пример #3
0
        public void PropertyInjection_ImportMember_With_Members_StartWith_Filter()
        {
            var container = new DependencyInjectionContainer();

            container.Configure(c =>
            {
                c.Export <BasicService>().As <IBasicService>();
                c.Export <MultipleService1>().As <IMultipleService>();
                c.Export <MultiplePropertyInject>().ImportMembers(MembersThat.StartWith("Basic"));
            });

            var instance = container.Locate <MultiplePropertyInject>();

            Assert.NotNull(instance);

            Assert.NotNull(instance.BasicService);

            Assert.Null(instance.MultipleService);
        }
Пример #4
0
        public void PropertyInjection_ImportMember_With_Members_HaveAttribute_Filter_With_Filter()
        {
            var container = new DependencyInjectionContainer();

            container.Configure(c =>
            {
                c.Export <BasicService>().As <IBasicService>();
                c.Export <MultipleService1>().As <IMultipleService>();
                c.Export <MultiplePropertyInject>().ImportMembers(MembersThat.HaveAttribute <SomeTestAttribute>(attribute => attribute.TestValue == 10));
            });

            var instance = container.Locate <MultiplePropertyInject>();

            Assert.NotNull(instance);

            Assert.Null(instance.BasicService);

            Assert.NotNull(instance.MultipleService);
        }
Пример #5
0
        public void ImportMembers_Filtered()
        {
            var container = new DependencyInjectionContainer();

            container.Configure(c =>
            {
                c.ImportMembers(MembersThat.HaveAttribute <ImportAttribute>());
                c.Export <BasicService>().As <IBasicService>();
                c.Export <MultipleService1>().As <IMultipleService>();
                c.Export <MultiplePropertyInject>();
            });

            var instance = container.Locate <MultiplePropertyInject>();

            Assert.NotNull(instance);

            Assert.NotNull(instance.BasicService);

            Assert.NotNull(instance.MultipleService);
        }
Пример #6
0
        public void ImportMembers_Filtered_Keyed()
        {
            var container = new DependencyInjectionContainer();

            container.Configure(c =>
            {
                c.ImportMembers(MembersThat.HaveAttribute <ImportAttribute>());
                c.Export <BasicService>().AsKeyed <IBasicService>("A");
                c.Export <OtherBasicService>().AsKeyed <IBasicService>("B");
                c.Export <KeyedMultiplePropertyInject>();
            });

            var instance = container.Locate <KeyedMultiplePropertyInject>();

            Assert.NotNull(instance);
            Assert.NotNull(instance.BasicServiceA);
            Assert.IsType <BasicService>(instance.BasicServiceA);

            Assert.NotNull(instance.BasicServiceB);
            Assert.IsType <OtherBasicService>(instance.BasicServiceB);
        }
Пример #7
0
        public void InjectionScopeDiagnostics_ImportMembers_Check_For_Missing_Method_Dependency()
        {
            var container = new DependencyInjectionContainer();

            container.Configure(c =>
            {
                c.Export <MethodInjectionClass>().ImportMembers(MembersThat.AreMethod(m => m.Name.StartsWith("Some")), true);
            });

            var diagnostic = container.Locate <InjectionScopeDiagnostics>();

            Assert.NotNull(diagnostic);

            var missingDependencies = diagnostic.PossibleMissingDependencies.ToArray();

            Assert.Equal(1, missingDependencies.Length);

            var dependency = missingDependencies[0];

            Assert.Equal("basicService", dependency.MemberName);
            Assert.Equal(DependencyType.MethodParameter, dependency.DependencyType);
            Assert.Equal(typeof(IBasicService), dependency.TypeBeingImported);
        }