Example #1
0
        public void Concrete_CustomMapping()
        {
            //Arrange
            IHaleyDIContainer _di = new DIContainer();
            Person            p1  = new Person()
            {
                name = "Senguttuvan"
            };

            _di.Register <Person>(p1);
            string expected = "BhadriNarayanan";

            //Act
            MappingProviderBase _mappingProvider = new MappingProviderBase();

            _mappingProvider.Add <Person>(null, new Person()
            {
                name = expected
            });
            var transient_actual    = _di.ResolveTransient <Person>(_mappingProvider, MappingLevel.Current).name;
            var asregistered_actual = _di.Resolve <Person>(_mappingProvider).name;
            var asregistered_forced = _di.Resolve <Person>(_mappingProvider, currentOnlyAsTransient: true).name;

            //Assert
            Assert.Equal(expected, transient_actual);
            Assert.Equal(expected, asregistered_actual);
            Assert.Null(asregistered_forced); //Because, we force creation, so name will be null
        }
Example #2
0
        public void TypeMapping__IMapping_Resolve()
        {
            //Arrange
            IHaleyDIContainer   _di   = new DIContainer();
            string              power = "Money";
            MappingProviderBase _mpb  = new MappingProviderBase();

            _mpb.Add <string>(nameof(SuperHero.power), power, typeof(SuperHero), InjectionTarget.Property);
            //Act
            _di.Register <IPerson, SuperHero>();
            var _shero = (SuperHero)_di.ResolveTransient <IPerson>(_mpb, MappingLevel.CurrentWithDependencies);

            //Assert
            Assert.Equal(power, _shero.power);
        }