Esempio n. 1
0
        static void Main(string[] args)
        {
            // REGISTRATION
            var container = new Container();

            // Register MasterCard conrete type to ICreditCard
            container.Configure(x => x.For <ICreditCard>().Use <MasterCard>());

            // Shopper class has ICreditCard in it's constructor
            // IoC will automatically get concrete type to MasterCard
            var shopper = container.GetInstance <Shopper>();

            shopper.Charge();

            // LIFECYCLE
            // Default lifecycle is "PerRequest"
            // Specify your own this way
            container.Configure(x => x.For <ICreditCard>().LifecycleIs(new SingletonLifecycle()));

            // FEATURES
            // TryGet => see if available => returns null if ICreditCard is NOT registered
            container.TryGetInstance <ICreditCard>();

            // Debugging => will show you what you have in container
            Console.WriteLine(container.WhatDoIHave());



            sContainer = new Container();
            sContainer.Configure(x => x.For <ICreditCard>().Use <MasterCard>());


            // Put registration into one registry class
            container = new Container(new MyRegistry());

            // Testing named instance
            var classA = container.GetInstance <ClassA>();
            var classB = container.GetInstance <ClassB>();

            //var c = new StructureMap.Container(ce =>
            //{
            //    ce.ForRequestedType<ICreditCard>().TheDefaultIsConcreteType<VisaCard>();
            //});
            //var test = c.GetInstance<ICreditCard>();

            //var mock = new Mock<Container>();
            //var t1 = mock.Setup(x => x.GetInstance<ICreditCard>()).Returns(new VisaCard());

            //IoC.Initialize();
            //var ccc = IoC.container.GetInstance<ICreditCard>();

            var mock = new Mock <IContainer>();
            var tt   = mock.Object;

            mock.Setup(x => x.GetInstance <ICreditCard>()).Returns(new MasterCard());
            //var tt2 = mock.Object.GetInstance<ICreditCard>();

            var worker = new Worker();

            worker.Work(mock.Object);

            var m = new Mock <HttpContextBase>();
            //var t2 = m.Setup(x => x.Request).Returns();
        }