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)); }
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); }
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); }
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); }
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); }
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); }
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); }