public ScopeConditionCopyNonLazyBinder FromResource(string resourcePath) { BindingUtil.AssertDerivesFromUnityObject(ConcreteTypes); BindInfo.RequireExplicitScope = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, SingletonTypes.FromResource, resourcePath.ToLower(), (_, type) => new ResourceProvider(resourcePath, type)); return(new ScopeConditionCopyNonLazyBinder(BindInfo)); }
public ScopeArgConditionCopyNonLazyBinder FromFactory(Type factoryType) { Assert.That(factoryType.DerivesFrom <IFactory>()); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, SingletonTypes.FromFactory, factoryType, (container, type) => new UntypedFactoryProvider( factoryType, container, BindInfo.Arguments)); return(new ScopeArgConditionCopyNonLazyBinder(BindInfo)); }
public ScopeArgConditionCopyNonLazyBinder FromNewComponentOn(Func <InjectContext, GameObject> gameObjectGetter) { BindingUtil.AssertIsComponent(ConcreteTypes); BindingUtil.AssertTypesAreNotAbstract(ConcreteTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, SingletonTypes.FromComponentGameObject, gameObjectGetter, (container, type) => new AddToExistingGameObjectComponentProviderGetter( gameObjectGetter, container, type, BindInfo.ConcreteIdentifier, BindInfo.Arguments)); return(new ScopeArgConditionCopyNonLazyBinder(BindInfo)); }
protected ScopeConditionCopyNonLazyBinder FromResolveGetterBase <TObj, TResult>( object identifier, Func <TObj, TResult> method) { BindingUtil.AssertIsDerivedFromTypes(typeof(TResult), AllParentTypes); BindInfo.RequireExplicitScope = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, SingletonTypes.FromGetter, new SingletonImplIds.ToGetter(identifier, method), (container, type) => new GetterProvider <TObj, TResult>(identifier, method, container)); return(new ScopeConditionCopyNonLazyBinder(BindInfo)); }
protected ScopeArgConditionCopyNonLazyBinder FromFactoryBase <TConcrete, TFactory>() where TFactory : IFactory <TConcrete> { BindingUtil.AssertIsDerivedFromTypes(typeof(TConcrete), AllParentTypes); // This is kind of like a look up method like FromMethod so don't enforce specifying scope BindInfo.RequireExplicitScope = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, SingletonTypes.FromFactory, typeof(TFactory), (container, type) => new FactoryProvider <TConcrete, TFactory>(container, BindInfo.Arguments)); return(new ScopeArgConditionCopyNonLazyBinder(BindInfo)); }
ScopeArgConditionCopyNonLazyBinder FromScriptableObjectResourceInternal( string resourcePath, bool createNew) { BindingUtil.AssertIsValidResourcePath(resourcePath); BindingUtil.AssertIsInterfaceOrScriptableObject(AllParentTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, createNew ? SingletonTypes.FromNewScriptableObjectResource : SingletonTypes.FromScriptableObjectResource, resourcePath.ToLower(), (container, type) => new ScriptableObjectResourceProvider( resourcePath, type, container, BindInfo.ConcreteIdentifier, BindInfo.Arguments, createNew)); return(new ScopeArgConditionCopyNonLazyBinder(BindInfo)); }
internal NameTransformScopeArgConditionCopyNonLazyBinder FromNewComponentOnNewGameObject( GameObjectCreationParameters gameObjectInfo) { BindingUtil.AssertIsComponent(ConcreteTypes); BindingUtil.AssertTypesAreNotAbstract(ConcreteTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, SingletonTypes.FromGameObject, gameObjectInfo, (container, type) => new AddToNewGameObjectComponentProvider( container, type, BindInfo.ConcreteIdentifier, BindInfo.Arguments, gameObjectInfo)); return(new NameTransformScopeArgConditionCopyNonLazyBinder(BindInfo, gameObjectInfo)); }