예제 #1
0
        public void UseAPreBuiltObjectWithAName()
        {
            // Return the specific instance when an IWidget named "Julia" is requested
            var julia = new CloneableWidget("Julia");

            container =
                new Container(x => x.For <IWidget>().Add(julia).Named("Julia"));

            var widget1 = (CloneableWidget)container.GetInstance <IWidget>("Julia");
            var widget2 = (CloneableWidget)container.GetInstance <IWidget>("Julia");
            var widget3 = (CloneableWidget)container.GetInstance <IWidget>("Julia");

            Assert.AreSame(julia, widget1);
            Assert.AreSame(julia, widget2);
            Assert.AreSame(julia, widget3);
        }
        public void UseAPreBuiltObjectWithAName()
        {
            // Return the specific instance when an IWidget named "Lindsey" is requested
            var lindsey = new CloneableWidget("Lindsey");

            container =
                new Container(x => x.For <IWidget>().Add(lindsey).Named("Lindsey"));

            var widget1 = (CloneableWidget)container.GetInstance <IWidget>("Lindsey");
            var widget2 = (CloneableWidget)container.GetInstance <IWidget>("Lindsey");
            var widget3 = (CloneableWidget)container.GetInstance <IWidget>("Lindsey");

            lindsey.ShouldBeTheSameAs(widget1);
            lindsey.ShouldBeTheSameAs(widget2);
            lindsey.ShouldBeTheSameAs(widget3);
        }
예제 #3
0
        public void UseAPreBuiltObjectForAnInstanceAsAPrototype()
        {
            // Build an instance for IWidget, then setup StructureMap to return cloned instances of the
            // "Prototype" (GoF pattern) whenever someone asks for IWidget named "Jeremy"
            var theWidget = new CloneableWidget("Jeremy");

            container = new Container(x =>
            {
                x.For <IWidget>().Add(new PrototypeInstance(theWidget).Named("Jeremy"));
            });

            var widget1 = (CloneableWidget)container.GetInstance <IWidget>("Jeremy");
            var widget2 = (CloneableWidget)container.GetInstance <IWidget>("Jeremy");
            var widget3 = (CloneableWidget)container.GetInstance <IWidget>("Jeremy");

            Assert.AreEqual("Jeremy", widget1.Name);
            Assert.AreEqual("Jeremy", widget2.Name);
            Assert.AreEqual("Jeremy", widget3.Name);

            Assert.AreNotSame(widget1, widget2);
            Assert.AreNotSame(widget1, widget3);
            Assert.AreNotSame(widget2, widget3);
        }
예제 #4
0
        public void UseAPreBuiltObjectWithAName()
        {
            // Return the specific instance when an IWidget named "Lindsey" is requested
            var lindsey = new CloneableWidget("Lindsey");

            container =
                new Container(x => x.For<IWidget>().Add(lindsey).Named("Lindsey"));

            var widget1 = (CloneableWidget)container.GetInstance<IWidget>("Lindsey");
            var widget2 = (CloneableWidget)container.GetInstance<IWidget>("Lindsey");
            var widget3 = (CloneableWidget)container.GetInstance<IWidget>("Lindsey");

            lindsey.ShouldBeTheSameAs(widget1);
            lindsey.ShouldBeTheSameAs(widget2);
            lindsey.ShouldBeTheSameAs(widget3);
        }
예제 #5
0
        public void UseAPreBuiltObjectWithAName()
        {
            // Return the specific instance when an IWidget named "Julia" is requested
            var julia = new CloneableWidget("Julia");

            container =
                new Container(x => x.For<IWidget>().Add(julia).Named("Julia"));

            var widget1 = (CloneableWidget) container.GetInstance<IWidget>("Julia");
            var widget2 = (CloneableWidget) container.GetInstance<IWidget>("Julia");
            var widget3 = (CloneableWidget) container.GetInstance<IWidget>("Julia");

            Assert.AreSame(julia, widget1);
            Assert.AreSame(julia, widget2);
            Assert.AreSame(julia, widget3);
        }
        public void UseAPreBuiltObjectForAnInstanceAsASerializedCopy()
        {
            // Build an instance for IWidget, then setup StructureMap to return cloned instances of the
            // "Prototype" (GoF pattern) whenever someone asks for IWidget named "Jeremy"
            var theWidget = new CloneableWidget("Jeremy");

            container =
                new Container(x =>
                {
                    x.For<IWidget>().Add(new SerializedInstance(theWidget).Named("Jeremy"));
                });

            var widget1 = (CloneableWidget) container.GetInstance<IWidget>("Jeremy");
            var widget2 = (CloneableWidget) container.GetInstance<IWidget>("Jeremy");
            var widget3 = (CloneableWidget) container.GetInstance<IWidget>("Jeremy");

            Assert.AreEqual("Jeremy", widget1.Name);
            Assert.AreEqual("Jeremy", widget2.Name);
            Assert.AreEqual("Jeremy", widget3.Name);

            Assert.AreNotSame(widget1, widget2);
            Assert.AreNotSame(widget1, widget3);
            Assert.AreNotSame(widget2, widget3);
        }