コード例 #1
0
 public Job(MyDbContext myDbContext, Dependency dependency, ChildDependency childDependency, Logger logger)
 {
     MyDbContext     = myDbContext;
     Dependency      = dependency;
     ChildDependency = childDependency;
     Logger          = logger;
 }
コード例 #2
0
        void Start()
        {
            InheritedDependency inherited = new InheritedDependency();
            OverridenDependency parentDep = new OverridenDependency();
            var parentContext             = Context.Create(Context.DEFAULT)
                                            .RegisterDependency(inherited)
                                            .RegisterDependency(parentDep);

            OverridenDependency siblingOverrideDep = new OverridenDependency();
            ChildDependency     siblingChildDep    = new ChildDependency();
            var siblingContext = Context.Create("green")
                                 .SetParentContext(Context.DEFAULT)
                                 .RegisterDependency(siblingOverrideDep)
                                 .RegisterDependency(siblingChildDep);

            OverridenDependency secondOverrideDep = new OverridenDependency();
            ChildDependency     childDep          = new ChildDependency();
            var secondContext = Context.Create("test")
                                .SetParentContext(Context.DEFAULT)
                                .RegisterDependency(secondOverrideDep)
                                .RegisterDependency(childDep);

            var thirdContext = Context.Create("base")
                               .SetParentContext("test");

            Assert.Equals(inherited, secondContext.TestResolve <InheritedDependency>(), "inherit inherited 1gen dependency");
            Assert.Equals(inherited, siblingContext.TestResolve <InheritedDependency>(), "inherit inherited 11gen dependency");
            Assert.Equals(inherited, thirdContext.TestResolve <InheritedDependency>(), "inherit inherited 2gen dependency");

            try
            {
                parentContext.TestResolve <ChildDependency>();
                Assert.NotReached("parent context resolved inappropriate dependency or haven't thrown an exception");
            }
            catch (BehaviourInjectException e)
            {
                Assert.Exception(e, "preventing reversed inheritanse");
            }

            Assert.NotEquals(parentDep,
                             secondContext.TestResolve <OverridenDependency>(), "inherited override dep");
            Assert.Equals(secondOverrideDep,
                          secondContext.TestResolve <OverridenDependency>(), "inherit resolver overriden");
            Assert.NotEquals(siblingContext.TestResolve <OverridenDependency>(),
                             secondContext.TestResolve <OverridenDependency>(), "inherited no sibling interference");

            Assert.Equals(secondOverrideDep,
                          thirdContext.TestResolve <OverridenDependency>(), "inherit inherited 2gen from 1gen dependency");

            //events

            Event evt = new Event();
            //bool isReached = false;
            //bool isReachedThird = false;
            //bool isReachedParent = false;
            var wrong = new WrongTransmitter();
            var parentContextTransmitter = new FlaggedTransmitter();
            var secondContextTransmitter = new FlaggedTransmitter();
            var thirdContextTransmitter  = new FlaggedTransmitter();

            parentContext.EventManager.AddTransmitter(wrong);
            //secondContext.EventManager.EventInjectors += (e) => { isReached = true; };
            secondContext.EventManager.AddTransmitter(secondContextTransmitter);
            secondContext.TestResolve <IEventDispatcher>().DispatchEvent(evt);
            Assert.True(secondContextTransmitter.IsReached, "inherit event reached child");
            secondContextTransmitter.IsReached = false;

            parentContext.EventManager.RemoveTransmitter(wrong);
            parentContext.EventManager.AddTransmitter(parentContextTransmitter);
            thirdContext.EventManager.AddTransmitter(thirdContextTransmitter);
            parentContext.TestResolve <IEventDispatcher>().DispatchEvent(evt);
            Assert.True(
                parentContextTransmitter.IsReached &&
                secondContextTransmitter.IsReached &&
                thirdContextTransmitter.IsReached, "inherit event reached all");

            //destruction

            thirdContext.Destroy();
            Assert.False(secondContext.IsDestroyed || parentContext.IsDestroyed, "context child no inversive destruction");
            parentContext.Destroy();
            Assert.True(siblingContext.IsDestroyed && secondContext.IsDestroyed, "context child inherited destruction");
        }
コード例 #3
0
 public Dependency(MyDbContext myDbContext, ChildDependency childDependency, Logger logger)
 {
     MyDbContext     = myDbContext;
     ChildDependency = childDependency;
     Logger          = logger;
 }