コード例 #1
0
        public void ObjectsOfTypeIncludingAncestorsWithStaticFactory()
        {
            StaticListableObjectFactory lof = new StaticListableObjectFactory();
            TestObject   t1 = new TestObject();
            TestObject   t2 = new TestObject();
            DummyFactory t3 = new DummyFactory();
            DummyFactory t4 = new DummyFactory();

            t4.IsSingleton = false;
            lof.AddObject("t1", t1);
            lof.AddObject("t2", t2);
            lof.AddObject("t3", t3);
            t3.AfterPropertiesSet(); // StaticListableObjectFactory does support lifecycle calls.
            lof.AddObject("t4", t4);
            t4.AfterPropertiesSet(); // StaticListableObjectFactory does support lifecycle calls.
            IDictionary <string, object> objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), true, false);

            Assert.AreEqual(2, objects.Count);
            Assert.AreEqual(t1, objects["t1"]);
            Assert.AreEqual(t2, objects["t2"]);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), false, true);
            Assert.AreEqual(3, objects.Count);
            Assert.AreEqual(t1, objects["t1"]);
            Assert.AreEqual(t2, objects["t2"]);
            Assert.AreEqual(t3.GetObject(), objects["t3"]);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), true, true);
            Assert.AreEqual(4, objects.Count);
            Assert.AreEqual(t1, objects["t1"]);
            Assert.AreEqual(t2, objects["t2"]);
            Assert.AreEqual(t3.GetObject(), objects["t3"]);
            Assert.IsTrue(objects["t4"] is TestObject);
        }
コード例 #2
0
        public void HierarchicalResolutionWithOverride()
        {
            object test3        = _factory.GetObject("test3");
            object test         = _factory.GetObject("test");
            object testFactory1 = _factory.GetObject("testFactory1");

            IDictionary <string, object> objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), true, false);

            Assert.AreEqual(3, objects.Count);
            Assert.AreEqual(test3, objects["test3"]);
            Assert.AreEqual(test, objects["test"]);
            Assert.AreEqual(testFactory1, objects["testFactory1"]);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), false, false);
            Assert.AreEqual(2, objects.Count);
            Assert.AreEqual(test, objects["test"]);
            Assert.AreEqual(testFactory1, objects["testFactory1"]);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), false, true);
            Assert.AreEqual(2, objects.Count);
            Assert.AreEqual(test, objects["test"]);
            Assert.AreEqual(testFactory1, objects["testFactory1"]);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), true, true);
            Assert.AreEqual(4, objects.Count);
            Assert.AreEqual(test3, objects["test3"]);
            Assert.AreEqual(test, objects["test"]);
            Assert.AreEqual(testFactory1, objects["testFactory1"]);
            Assert.IsTrue(objects["testFactory2"] is ITestObject);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(DummyFactory), true, true);
            Assert.AreEqual(2, objects.Count);
            Assert.AreEqual(_factory.GetObject("&testFactory1"), objects["&testFactory1"]);
            Assert.AreEqual(_factory.GetObject("&testFactory2"), objects["&testFactory2"]);
            objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(IFactoryObject), true, true);
            Assert.AreEqual(2, objects.Count);
            Assert.AreEqual(_factory.GetObject("&testFactory1"), objects["&testFactory1"]);
            Assert.AreEqual(_factory.GetObject("&testFactory2"), objects["&testFactory2"]);
        }
コード例 #3
0
        public void NoObjectsOfTypeIncludingAncestors()
        {
            StaticListableObjectFactory lof = new StaticListableObjectFactory();

            lof.AddObject("foo", new object());
            IDictionary <string, object> objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), true, false);

            Assert.IsTrue(objects.Count == 0);
        }
コード例 #4
0
        public void ObjectOfTypeIncludingAncestorsExcludesObjectsFromParentWhenLocalObjectDefined()
        {
            DefaultListableObjectFactory root = new DefaultListableObjectFactory();

            root.RegisterObjectDefinition("excludeLocalObject", new RootObjectDefinition(typeof(ArrayList)));
            DefaultListableObjectFactory child = new DefaultListableObjectFactory(root);

            child.RegisterObjectDefinition("excludeLocalObject", new RootObjectDefinition(typeof(Hashtable)));

            IDictionary <string, object> objectEntries = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(child, typeof(ArrayList), true, true);

            // "excludeLocalObject" matches on the parent, but not the local object definition
            Assert.AreEqual(0, objectEntries.Count);
        }