Ejemplo n.º 1
0
        public void AggregateTest()
        {
            IAggregatable duck = DuckTyping.Aggregate <IAggregatable>(new AggregateClass1(), new AggregateClass2());

            Assert.IsNotNull(duck);

            Assert.AreEqual(1, duck.Method1());
            Assert.AreEqual(2, duck.Method2());

            // It is still possible to get access
            // to an interface of an underlying object.
            //
            IClass2 cls2 = DuckTyping.Implement <IClass2>(duck);

            Assert.IsNotNull(cls2);
            Assert.AreEqual(2, cls2.Method2());

            // Even to switch from one aggregated object to another
            //
            IClass1 cls1 = DuckTyping.Implement <IClass1>(cls2);

            Assert.IsNotNull(cls1);
            Assert.AreEqual(1, cls1.Method1());
            Assert.AreEqual(3, cls1.Method3());
        }
        public void SamopalDISeeCommentsIntTest05()
        {
            var di = new SamopalDI();

            di.BindDefault <IClass5>((args) => new Class5((string)args[0]));

            di.BindDefault <IClass2, Class2>();
            di.BindDefault <IClass3, Class3>();
            di.BindDefault <IClass4>((args) =>
            {
                IClass5 c5 = di.GetDefault <IClass5>(args);
                return(new Class4(c5));
            });

            di.BindDefault <IClass1>((args) =>
            {
                IClass2 c2 = di.GetDefault <IClass2>();
                IClass4 c4 = di.GetDefault <IClass4>(args);

                return(new Class1(c2, c4));
            });

            object[] arrayOfArgs = new object[] { "Hello, Test!" };

            Type    expected = typeof(Class1);
            IClass1 variable = di.GetDefault <IClass1>(arrayOfArgs);
            Type    actual   = variable.GetType();

            Assert.AreEqual(expected, actual);
            Assert.AreEqual("Hello, Test!", variable.Class4.Class5.SomeString);
            Assert.IsNotNull(variable.Class2.Class3);
        }
        public void SamopalDISeeCommentsIntTest08()
        {
            var di = new SamopalDI();

            di.BindExample <IClass5>(100500, (args) => new Class5((string)args[0]));

            // here is the source of problems
            // IClass3 is binding to example 1, not to Default,
            // and IClass2 isn't get IClass3 instance by correct delegate
            di.BindExample <IClass2, Class2>(1456);
            di.BindExample <IClass3, Class3>(3334445);
            di.BindExample <IClass4>(1, (args) =>
            {
                IClass5 c5 = di.GetExample <IClass5>(100500, args);
                return(new Class4(c5));
            });

            di.BindExample <IClass1>(-100600, (args) =>
            {
                IClass2 c2 = di.GetExample <IClass2>(1456);
                IClass4 c4 = di.GetExample <IClass4>(1, args);

                return(new Class1(c2, c4));
            });

            object[] arrayOfArgs = new object[] { "Hello, Test!" };

            Assert.ThrowsException <ArgumentException>(() => di.GetExample <IClass1>(-100600, arrayOfArgs));
        }
Ejemplo n.º 4
0
 public HomeController(IInjectionContainer ioc)
 {
     _class1 = ioc.Resolve <IClass1>();
     _class2 = ioc.Resolve <IClass2>();
     _class3 = ioc.Resolve <IClass3>();
     _thing  = ioc.Resolve <IClass1>("thing");
 }
Ejemplo n.º 5
0
 public Class3(
     IClass2 class2)
 {
     // We SHOULD be able to call into class2 here and FULLY expect that it is completely initialized
     // as this class should NOT have to care how IClass2 is created. It should be fully resolved before
     // this constructor is called.
     class2.DoClass2();
 }
Ejemplo n.º 6
0
        public void GenericMethodWithConstrait()
        {
            IClass1 class1 = MockRepository.Mock <IClass1>();
            IClass2 class2 = MockRepository.Mock <IClass2>();

            class1.Expect(x => x.Method1 <int>(1));
            class2.Expect(x => x.Method2(new ExampleClass()));
        }
Ejemplo n.º 7
0
        public void GenericMethodWithConstrait()
        {
            MockRepository mocks = new MockRepository();

            IClass1 class1 = mocks.StrictMock <IClass1>();
            IClass2 class2 = mocks.StrictMock <IClass2>();

            class1.Method1 <int>(1);
            class2.Method2(mocks);
        }
        public void GenericMethodWithConstrait()
        {
            IClass1 class1 = MockRepository.Mock <IClass1>();

            class1.SetUnexpectedBehavior(UnexpectedCallBehaviors.BaseOrDefault);
            IClass2 class2 = MockRepository.Mock <IClass2>();

            class2.SetUnexpectedBehavior(UnexpectedCallBehaviors.BaseOrDefault);

            class1.Expect(x => x.Method1 <int>(1));
            class2.Expect(x => x.Method2(new ExampleClass()));
        }
Ejemplo n.º 9
0
        public void RegisterAndResolveTwoClassesToInterface()
        {
            SimpleDependencyInjector di = new SimpleDependencyInjector();

            di.Register(typeof(MyClass), typeof(IClass));
            di.Register(typeof(MyClass2), typeof(IClass2));

            IClass  iClass  = di.Resolve(typeof(MyClass), typeof(IClass)) as MyClass;
            IClass2 iClass2 = di.Resolve(typeof(MyClass2), typeof(IClass2)) as MyClass2;

            Assert.AreEqual(true, iClass.IsEnabled);
            Assert.AreEqual(true, iClass2.IsEnabled);
        }
Ejemplo n.º 10
0
        public static bool GetAddDefaultConstructorIfRequired(this IClass c)
        {
            IClass2 c2 = c as IClass2;

            if (c2 != null)
            {
                return(c2.AddDefaultConstructorIfRequired);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 11
0
        public void SamopalDISeeCommentsIntTest02()
        {
            var di = new SamopalDI();

            di.BindDefault <IClass3, Class3>();
            di.BindExample <IClass2>(1, (args) => new Class2(di.GetDefault <IClass3>()));

            IClass2 class2WithClass3 = di.GetExample <IClass2>(1, null);

            di.BindDefault <IClass3, AnotherClass3>();
            di.BindExample <IClass2>(1, (args) => new AnotherClass2(di.GetDefault <IClass3>()));

            IClass2 class2WithAnotherClass3 = di.GetExample <IClass2>(1, null);
        }
Ejemplo n.º 12
0
        public void SamopalDISeeCommentsIntTest09()
        {
            var di = new SamopalDI();

            di.BindExample <IClass5>(100500, (args) => new Class5((string)args[0]));

            // now we'll get IClass4 example instance by correct delegate
            di.BindExample <IClass2>(1456, (args) =>
            {
                IClass3 class3 = di.GetExample <IClass3>(3334445);
                return(new Class2(class3));
            });
            di.BindExample <IClass3, Class3>(3334445);

            di.BindExample <IClass4>(1, (args) =>
            {
                IClass5 c5 = di.GetExample <IClass5>(100500, args);
                return(new Class4(c5));
            });

            di.BindExample <IClass1>(-100600, (args) =>
            {
                IClass2 c2 = di.GetExample <IClass2>(1456);
                IClass4 c4 = di.GetExample <IClass4>(1, args);

                return(new Class1(c2, c4));
            });

            object[] arrayOfArgs = new object[] { "Hello, Test!" };

            Type    expected = typeof(Class1);
            IClass1 variable = di.GetExample <IClass1>(-100600, arrayOfArgs);
            Type    actual   = variable.GetType();

            Assert.AreEqual(expected, actual);
            Assert.AreEqual("Hello, Test!", variable.Class4.Class5.SomeString);
            Assert.IsNotNull(variable.Class2.Class3);
        }
Ejemplo n.º 13
0
 public TenClassesController(
     IClass1 classA,
     IClass2 classB,
     IClass3 classC,
     IClass4 classD,
     IClass5 classE,
     IClass6 classF,
     IClass7 classG,
     IClass8 classH,
     IClass9 classI,
     IClass10 classJ
     )
 {
     this.classA = classA;
     this.classB = classB;
     this.classC = classC;
     this.classD = classD;
     this.classE = classE;
     this.classF = classF;
     this.classG = classG;
     this.classH = classH;
     this.classI = classI;
     this.classJ = classJ;
 }
 public Class1(IClass2 class2, IClass4 class4)
 {
     Class2 = class2;
     Class4 = class4;
 }
Ejemplo n.º 15
0
 public void VoidSecond(IClass2 class2, IClass3 class3)
 {
     //Do nothing
 }
Ejemplo n.º 16
0
 public bool Second(IClass2 class2, IClass3 class3)
 {
     return(true);
 }
 public HundredClassesController(
     IClass1 class1,
     IClass2 class2,
     IClass3 class3,
     IClass4 class4,
     IClass5 class5,
     IClass6 class6,
     IClass7 class7,
     IClass8 class8,
     IClass9 class9,
     IClass10 class10,
     IClass11 class11,
     IClass12 class12,
     IClass13 class13,
     IClass14 class14,
     IClass15 class15,
     IClass16 class16,
     IClass17 class17,
     IClass18 class18,
     IClass19 class19,
     IClass20 class20,
     IClass21 class21,
     IClass22 class22,
     IClass23 class23,
     IClass24 class24,
     IClass25 class25,
     IClass26 class26,
     IClass27 class27,
     IClass28 class28,
     IClass29 class29,
     IClass30 class30,
     IClass31 class31,
     IClass32 class32,
     IClass33 class33,
     IClass34 class34,
     IClass35 class35,
     IClass36 class36,
     IClass37 class37,
     IClass38 class38,
     IClass39 class39,
     IClass40 class40,
     IClass41 class41,
     IClass42 class42,
     IClass43 class43,
     IClass44 class44,
     IClass45 class45,
     IClass46 class46,
     IClass47 class47,
     IClass48 class48,
     IClass49 class49,
     IClass50 class50,
     IClass51 class51,
     IClass52 class52,
     IClass53 class53,
     IClass54 class54,
     IClass55 class55,
     IClass56 class56,
     IClass57 class57,
     IClass58 class58,
     IClass59 class59,
     IClass60 class60,
     IClass61 class61,
     IClass62 class62,
     IClass63 class63,
     IClass64 class64,
     IClass65 class65,
     IClass66 class66,
     IClass67 class67,
     IClass68 class68,
     IClass69 class69,
     IClass70 class70,
     IClass71 class71,
     IClass72 class72,
     IClass73 class73,
     IClass74 class74,
     IClass75 class75,
     IClass76 class76,
     IClass77 class77,
     IClass78 class78,
     IClass79 class79,
     IClass80 class80,
     IClass81 class81,
     IClass82 class82,
     IClass83 class83,
     IClass84 class84,
     IClass85 class85,
     IClass86 class86,
     IClass87 class87,
     IClass88 class88,
     IClass89 class89,
     IClass90 class90,
     IClass91 class91,
     IClass92 class92,
     IClass93 class93,
     IClass94 class94,
     IClass95 class95,
     IClass96 class96,
     IClass97 class97,
     IClass98 class98,
     IClass99 class99,
     IClass100 class100
     )
 {
     this.class1   = class1;
     this.class2   = class2;
     this.class3   = class3;
     this.class4   = class4;
     this.class5   = class5;
     this.class6   = class6;
     this.class7   = class7;
     this.class8   = class8;
     this.class9   = class9;
     this.class10  = class10;
     this.class11  = class11;
     this.class12  = class12;
     this.class13  = class13;
     this.class14  = class14;
     this.class15  = class15;
     this.class16  = class16;
     this.class17  = class17;
     this.class18  = class18;
     this.class19  = class19;
     this.class20  = class20;
     this.class21  = class21;
     this.class22  = class22;
     this.class23  = class23;
     this.class24  = class24;
     this.class25  = class25;
     this.class26  = class26;
     this.class27  = class27;
     this.class28  = class28;
     this.class29  = class29;
     this.class30  = class30;
     this.class31  = class31;
     this.class32  = class32;
     this.class33  = class33;
     this.class34  = class34;
     this.class35  = class35;
     this.class36  = class36;
     this.class37  = class37;
     this.class38  = class38;
     this.class39  = class39;
     this.class40  = class40;
     this.class41  = class41;
     this.class42  = class42;
     this.class43  = class43;
     this.class44  = class44;
     this.class45  = class45;
     this.class46  = class46;
     this.class47  = class47;
     this.class48  = class48;
     this.class49  = class49;
     this.class50  = class50;
     this.class51  = class51;
     this.class52  = class52;
     this.class53  = class53;
     this.class54  = class54;
     this.class55  = class55;
     this.class56  = class56;
     this.class57  = class57;
     this.class58  = class58;
     this.class59  = class59;
     this.class60  = class60;
     this.class61  = class61;
     this.class62  = class62;
     this.class63  = class63;
     this.class64  = class64;
     this.class65  = class65;
     this.class66  = class66;
     this.class67  = class67;
     this.class68  = class68;
     this.class69  = class69;
     this.class70  = class70;
     this.class71  = class71;
     this.class72  = class72;
     this.class73  = class73;
     this.class74  = class74;
     this.class75  = class75;
     this.class76  = class76;
     this.class77  = class77;
     this.class78  = class78;
     this.class79  = class79;
     this.class80  = class80;
     this.class81  = class81;
     this.class82  = class82;
     this.class83  = class83;
     this.class84  = class84;
     this.class85  = class85;
     this.class86  = class86;
     this.class87  = class87;
     this.class88  = class88;
     this.class89  = class89;
     this.class90  = class90;
     this.class91  = class91;
     this.class92  = class92;
     this.class93  = class93;
     this.class94  = class94;
     this.class95  = class95;
     this.class96  = class96;
     this.class97  = class97;
     this.class98  = class98;
     this.class99  = class99;
     this.class100 = class100;
 }
Ejemplo n.º 18
0
        //練習一的程式碼註解
        //private static Logger logger = LogManager.GetCurrentClassLogger();
        static void Main(string[] args)
        {
            //--------練習三的程式碼註解----------------------------------------------------------------
            ILogger         logger         = LogManager.GetCurrentClassLogger();
            IUnityContainer unitycontainer = new UnityContainer(); // 建立物件

            unitycontainer.RegisterTypes(                          //Unity的設定
                AllClasses.FromLoadedAssemblies(),
                WithMappings.FromMatchingInterface,
                WithName.Default,
                WithLifetime.Hierarchical
                );
            unitycontainer.RegisterInstance <ILogger>(logger);   // 注入 客制的注入要再自動地注入後面。

            IClass2 result = unitycontainer.Resolve <IClass2>(); //取得實作

            result.DemoMethod();

            //--------練習二的程式碼註解----------------------------------------------------------------
            //ILogger logger = LogManager.GetCurrentClassLogger();
            //IClass2 class1 = new Class2(logger);
            //class1.DemoMethod();

            //--------練習一的程式碼註解----------------------------------------------------------------
            //logger.Trace("我是追蹤:Trace");
            //logger.Debug("我是偵錯:Debug");
            //logger.Info("我是資訊:Info");
            //logger.Warn("我是警告:Warn");
            //logger.Error("我是錯誤:error");
            //logger.Fatal("我是致命錯誤:Fatal");



            //automapper未使用時的程式碼-----------------------------------------
            var amodel = new AModel
            {
                Name = "Jeff",
                No   = 123
            };
            var bmodel = new BModel
            {
                Name = amodel.Name,
                No   = amodel.No
            };
            //automapper未使用時的程式碼-----------------------------------------

            //加了auto-----------------------------------
            var config = new MapperConfiguration(cfg => cfg.CreateMap <AModel, BModel>());
            var mapper = config.CreateMapper();

            var amodel2 = new AModel
            {
                Name = "Jeff",
                No   = 123
            };
            var bmodel3 = mapper.Map <BModel>(amodel2);
            //加了auto-----------------------------------

            //透過AddProfile增加多組mapping----------------------------------------
            var config2 = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <AModel, BModel>();
                cfg.AddProfile <BModelProfile>();
            });
            var mapper2 = config2.CreateMapper();

            var amodel4 = new AModel
            {
                Name = "Jeff",
                No   = 123
            };
            var bmodel4 = mapper.Map <BModel>(amodel4);
            //透過AddProfile增加多組mapping----------------------------------------
        }
Ejemplo n.º 19
0
 public Class3(IClass1 class1, IClass2 class2)
 {
     this.class1 = class1; this.class2 = class2;
 }
Ejemplo n.º 20
0
 public ImplIClass3(IClass1 class1, IClass2 class2)
 {
     _class1 = class1;
     _class2 = class2;
 }
 Class2 ToClass(IClass2 iClass)
 {
     // REWRITE TO FIT YOUR NEEDS
     return((Class2)iClass);
 }
Ejemplo n.º 22
0
 public TestClass(IClass iclass, IClass2 iclass2)
 {
     IsGood = iclass.IsEnabled & iclass2.IsEnabled;
 }
 public Class1(IClass2 class2)
 {
     this.class2 = class2;
 }
 public GenericManager(IInjectionContainer ioc)
 {
     _class1 = ioc.Resolve <IClass1>();
     _class2 = ioc.Resolve <IClass2>();
     _class3 = ioc.Resolve <IClass3>();
 }
Ejemplo n.º 25
0
 public Class1Service(IClass2 class2)
 {
     _class2 = class2;
 }
 public void fRun(IClass1 p_oOb1, IClass2 p_oOb2)
 {
     _1.fRun(p_oOb1);
     _2.fRun(p_oOb2);
 }
Ejemplo n.º 27
0
 public LogClass2(IClass2 obj)
 {
     _obj = obj;
 }
Ejemplo n.º 28
0
 public ImplIClass3Bis(IClass2 class1, IClass1 class2)
 {
 }
 public Class1(IClass2 class2)
 {
     Class2 = class2;
 }