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)); }
public override object GetInstance(Type contractType, InjectContext context) { Assert.That(_componentType.DerivesFromOrEqual(contractType)); if (_instance == null) { if (_instantiator == null) { _instantiator = _container.Resolve <GameObjectInstantiator>(); } Assert.That(!_container.AllowNullBindings, "Tried to instantiate a MonoBehaviour with type '{0}' during validation. Object graph: {1}", _componentType, DiContainer.GetCurrentObjectGraph()); // We don't use the generic version here to avoid duplicate generic arguments to binder _instance = _instantiator.Instantiate(_componentType, _name); Assert.That(_instance != null); } return(_instance); }