예제 #1
0
        public void LookupMethodWithNullMethod()
        {
            try
            {
                RootObjectDefinition feedDef = new RootObjectDefinition(typeof(NewsFeed));
                feedDef.IsSingleton = false;
                feedDef.PropertyValues.Add("name", "Bingo");

                RootObjectDefinition managerDef = new RootObjectDefinition(typeof(ReturnsNullNewsFeedManager));
                managerDef.MethodOverrides.Add(new LookupMethodOverride("CreateNewsFeed", "feed"));

                DefaultListableObjectFactory factory = new DefaultListableObjectFactory();
                factory.RegisterObjectDefinition("manager", managerDef);
                factory.RegisterObjectDefinition("feed", feedDef);
                INewsFeedManager manager = (INewsFeedManager)factory["manager"];
                NewsFeed         feed1   = manager.CreateNewsFeed();
                Assert.IsNotNull(feed1, "The CreateNewsFeed() method is not being replaced.");
                NewsFeed feed2 = manager.CreateNewsFeed();
                // assert that the object (prototype) is definitely being looked up each time...
                Assert.IsFalse(ReferenceEquals(feed1, feed2));
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine("ex = {0}", ex);
            }
        }
예제 #2
0
        public void LookupMethodMultiple()
        {
            RootObjectDefinition feedDef = new RootObjectDefinition(typeof(NewsFeed));

            feedDef.IsSingleton = false;
            feedDef.PropertyValues.Add("name", "Bingo");

            RootObjectDefinition testObjectDef = new RootObjectDefinition(typeof(TestObject));

            testObjectDef.IsSingleton = false;
            testObjectDef.PropertyValues.Add("name", "Miki Nakatani");

            RootObjectDefinition managerDef = new RootObjectDefinition(typeof(TestObjectAndNewsFeedFactory));

            managerDef.MethodOverrides.Add(new LookupMethodOverride("CreateNewsFeed", "feed"));
            managerDef.MethodOverrides.Add(new LookupMethodOverride("CreateTestObject", "test"));

            DefaultListableObjectFactory factory = new DefaultListableObjectFactory();

            factory.RegisterObjectDefinition("manager", managerDef);
            factory.RegisterObjectDefinition("feed", feedDef);
            factory.RegisterObjectDefinition("test", testObjectDef);
            TestObjectAndNewsFeedFactory manager = (TestObjectAndNewsFeedFactory)factory["manager"];

            INewsFeedManager newsFeedManager = manager;
            NewsFeed         feed1           = newsFeedManager.CreateNewsFeed();

            Assert.IsNotNull(feed1, "The CreateNewsFeed() method is not being replaced.");
            NewsFeed feed2 = newsFeedManager.CreateNewsFeed();

            // assert that the object (prototype) is definitely being looked up each time...
            Assert.IsFalse(ReferenceEquals(feed1, feed2));

            ITestObjectFactory toFactory = manager;
            ITestObject        to1       = toFactory.CreateTestObject();

            Assert.IsNotNull(to1, "The CreateTestObject() method is not being replaced.");
            ITestObject to2 = toFactory.CreateTestObject();

            // assert that the object (prototype) is definitely being looked up each time...
            Assert.IsFalse(ReferenceEquals(to1, to2));
        }
예제 #3
0
        public void SunnyDayReplaceMethod()
        {
            RootObjectDefinition replacerDef = new RootObjectDefinition(typeof(NewsFeedFactory));

            RootObjectDefinition managerDef = new RootObjectDefinition(typeof(ReturnsNullNewsFeedManager));

            managerDef.MethodOverrides.Add(new ReplacedMethodOverride("CreateNewsFeed", "replacer"));

            DefaultListableObjectFactory factory = new DefaultListableObjectFactory();

            factory.RegisterObjectDefinition("manager", managerDef);
            factory.RegisterObjectDefinition("replacer", replacerDef);
            INewsFeedManager manager = (INewsFeedManager)factory["manager"];
            NewsFeed         feed1   = manager.CreateNewsFeed();

            Assert.IsNotNull(feed1, "The CreateNewsFeed() method is not being replaced.");
            Assert.AreEqual(NewsFeedFactory.DefaultName, feed1.Name);
            NewsFeed feed2 = manager.CreateNewsFeed();

            // NewsFeedFactory always yields a new NewsFeed (see class definition below)...
            Assert.IsFalse(ReferenceEquals(feed1, feed2));
        }
예제 #4
0
 public NewsFeedController(INewsFeedManager newsFeedManager)
 {
     this.newsFeedManager = newsFeedManager;
 }
 /// <summary>
 /// Intialize
 /// </summary>
 /// <param name="newFeedManager"></param>
 public NewsController(INewsFeedManager newFeedManager)
 {
     _newFeedManager = newFeedManager;
 }