示例#1
0
        object Instantiate(Type contractType)
        {
            if (_createMethod != null)
            {
                return(_createMethod(_container));
            }

            var concreteType = GetTypeToInstantiate(contractType);

            if (!UnityUtil.IsNull(_id.Prefab))
            {
                Assert.That(concreteType.DerivesFrom <Component>(), "Expected '{0}' to derive from 'Component'", concreteType.Name);

                if (_gameObjInstantiator == null)
                {
                    _gameObjInstantiator = _container.Resolve <GameObjectInstantiator>();
                }

                return(_gameObjInstantiator.Instantiate(_id.Type, _id.Prefab));
            }

            if (_instantiator == null)
            {
                _instantiator = _container.Resolve <Instantiator>();
            }

            return(_instantiator.Instantiate(concreteType));
        }
示例#2
0
        public DiContainer()
        {
            _singletonMap = new SingletonProviderMap(this);
            _instantiator = new Instantiator(this);

            Bind <DiContainer>().To(this);
            Bind <Instantiator>().To(_instantiator);
        }
示例#3
0
        public virtual TContract Create(params object[] constructorArgs)
        {
            if (_instantiator == null)
            {
                _instantiator = _container.Resolve <Instantiator>();
            }

            return(_instantiator.Instantiate <TConcrete>(constructorArgs));
        }
示例#4
0
        public ListFactory(
            List <Type> implTypes,
            Instantiator instantiator)
        {
            foreach (var type in implTypes)
            {
                Assert.That(type.DerivesFromOrEqual <T>());
            }

            _implTypes    = implTypes;
            _instantiator = instantiator;
        }
示例#5
0
        public override object GetInstance(Type contractType, InjectContext context)
        {
            if (_instantiator == null)
            {
                _instantiator = _container.Resolve <Instantiator>();
            }

            var obj = _instantiator.Instantiate(GetTypeToInstantiate(contractType));

            Assert.That(obj != null);
            return(obj);
        }
示例#6
0
        public DiContainer()
        {
            _singletonMap       = new SingletonProviderMap(this);
            _prefabSingletonMap = new PrefabSingletonProviderMap(this);
            _instantiator       = new Instantiator(this);

            Bind <DiContainer>().To(this);
            Bind <Instantiator>().To(_instantiator);
            Bind <SingletonProviderMap>().To(_singletonMap);
            Bind <PrefabSingletonProviderMap>().To(_prefabSingletonMap);
            Bind <SingletonInstanceHelper>().To(new SingletonInstanceHelper(_singletonMap, _prefabSingletonMap));
        }