예제 #1
0
        public void ReturnSameInstanceWhenInstanceRegistered()
        {
            SimpleContainer c    = new SimpleContainer();
            IFoo            foo1 = new Foo();

            c.RegisterInstance <IFoo>(foo1);
            IFoo foo2 = c.Resolve <IFoo>();
            IFoo foo3 = c.Resolve <IFoo>();

            Assert.Equal(foo1, foo2);
            Assert.Equal(foo1, foo1);

            c.RegisterType <IBar, Bar>(false);
            IBar b1 = c.Resolve <IBar>();
            IBar b2 = new Bar();

            c.RegisterInstance <IBar>(b2);
            IBar b3 = c.Resolve <IBar>();

            Assert.NotEqual(b1, b3);
            Assert.Equal(typeof(Bar), b1.GetType());

            c.RegisterType <IBar, BarNew>(false);
            IBar b4 = c.Resolve <IBar>();

            Assert.Equal(typeof(BarNew), b4.GetType());
        }
예제 #2
0
        public void ChooseConstructorWithLongestParamatereList()
        {
            SimpleContainer c = new SimpleContainer();

            c.RegisterType <IBar, Bar>(false);
            IBar b1 = c.Resolve <IBar>();

            Assert.Equal(typeof(Bar), b1.GetType());
            Assert.Equal(1, b1.getA());
            Assert.Equal(1, b1.getB());
        }
         private static async Task<object> CallGetByReflection(IFoo foo, IBar bar)
         {
             var method = typeof(IFoo).GetMethod(nameof(IFoo.Get));
             var generic = method.MakeGenericMethod(bar.GetType());
             var task = (Task) generic.Invoke(foo, new[] {bar});
 
             await task.ConfigureAwait(false);
 
             var resultProperty = task.GetType().GetProperty("Result"));
             return resultProperty.GetValue(task);
         }
예제 #4
0
        public void DependencyCreationTest()
        {
            DependencyConfiguration configuration = new DependencyConfiguration();

            configuration.Register <IBar, BarFromABar>(false);
            DependencyProvider provider = new DependencyProvider(configuration);
            IBar bar = provider.Resolve <IBar>();

            Assert.IsNotNull(bar);
            Assert.AreEqual(bar.GetType(), typeof(BarFromABar));
        }
예제 #5
0
        public void ReturnOverwritedRegister()
        {
            SimpleContainer c = new SimpleContainer();

            c.RegisterType <IBar, Bar>(false);
            IBar b1 = c.Resolve <IBar>();

            Assert.Equal(typeof(Bar), b1.GetType());
            c.RegisterType <IBar, BarNew>(false);
            IBar b2 = c.Resolve <IBar>();

            Assert.Equal(typeof(BarNew), b2.GetType());
        }