// Note that this is the default, so not necessary to call public FromBinderGeneric <TContract> ToSelf() { Assert.IsEqual(BindInfo.ToChoice, ToChoices.Self); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new TransientProvider( type, container, BindInfo.Arguments, BindInfo.ContextInfo, BindInfo.ConcreteIdentifier, BindInfo.InstantiatedCallback)); return(this); }
protected ScopeConcreteIdArgConditionCopyNonLazyBinder FromInstanceBase(object instance) { BindingUtil.AssertInstanceDerivesFromOrEqual(instance, AllParentTypes); BindInfo.RequireExplicitScope = false; // Don't know how it's created so can't assume here that it violates AsSingle BindInfo.MarkAsCreationBinding = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new InstanceProvider(type, instance, container, BindInfo.InstantiatedCallback)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
ScopeConcreteIdArgConditionCopyNonLazyBinder FromResolveInternal(object subIdentifier, bool matchAll, InjectSources source) { BindInfo.RequireExplicitScope = false; // Don't know how it's created so can't assume here that it violates AsSingle BindInfo.MarkAsCreationBinding = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new ResolveProvider( type, container, subIdentifier, false, source, matchAll)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
protected ScopeConcreteIdArgConditionCopyNonLazyBinder FromMethodBase <TConcrete>(Func <InjectContext, TConcrete> method) { BindingUtil.AssertIsDerivedFromTypes(typeof(TConcrete), AllParentTypes); BindInfo.RequireExplicitScope = false; // Don't know how it's created so can't assume here that it violates AsSingle BindInfo.MarkAsCreationBinding = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new MethodProvider <TConcrete>(method, container)); return(this); }
public ScopeConcreteIdArgConditionCopyNonLazyBinder FromNewComponentOn(Func <InjectContext, GameObject> gameObjectGetter) { BindingUtil.AssertIsComponent(ConcreteTypes); BindingUtil.AssertTypesAreNotAbstract(ConcreteTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new AddToExistingGameObjectComponentProviderGetter( gameObjectGetter, container, type, BindInfo.Arguments, BindInfo.ConcreteIdentifier, BindInfo.InstantiatedCallback)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
public ScopeConcreteIdArgConditionCopyNonLazyBinder FromComponentOn(Func <InjectContext, GameObject> gameObjectGetter) { BindingUtil.AssertIsComponent(ConcreteTypes); BindingUtil.AssertTypesAreNotAbstract(ConcreteTypes); BindInfo.RequireExplicitScope = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new GetFromGameObjectGetterComponentProvider( type, gameObjectGetter, true)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
protected ScopeConcreteIdArgConditionCopyNonLazyBinder FromResolveGetterBase <TObj, TResult>( object identifier, Func <TObj, TResult> method, InjectSources source, bool matchMultiple) { BindingUtil.AssertIsDerivedFromTypes(typeof(TResult), AllParentTypes); BindInfo.RequireExplicitScope = false; // Don't know how it's created so can't assume here that it violates AsSingle BindInfo.MarkAsCreationBinding = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new GetterProvider <TObj, TResult>(identifier, method, container, source, matchMultiple)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
ScopeConcreteIdArgConditionCopyNonLazyBinder FromScriptableObjectInternal( ScriptableObject resource, bool createNew) { BindingUtil.AssertIsInterfaceOrScriptableObject(AllParentTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new ScriptableObjectInstanceProvider( resource, type, container, BindInfo.Arguments, createNew, BindInfo.ConcreteIdentifier, BindInfo.InstantiatedCallback)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
public ScopeConcreteIdArgConditionCopyNonLazyBinder FromComponentsOn(GameObject gameObject) { BindingUtil.AssertIsValidGameObject(gameObject); BindingUtil.AssertIsComponent(ConcreteTypes); BindingUtil.AssertTypesAreNotAbstract(ConcreteTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new GetFromGameObjectComponentProvider( type, gameObject, false)); return(new ScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo)); }
internal NameTransformScopeConcreteIdArgConditionCopyNonLazyBinder FromNewComponentOnNewGameObject( GameObjectCreationParameters gameObjectInfo) { BindingUtil.AssertIsComponent(ConcreteTypes); BindingUtil.AssertTypesAreNotAbstract(ConcreteTypes); BindInfo.RequireExplicitScope = true; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, type) => new AddToNewGameObjectComponentProvider( container, type, BindInfo.Arguments, gameObjectInfo, BindInfo.ConcreteIdentifier, BindInfo.InstantiatedCallback)); return(new NameTransformScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo, gameObjectInfo)); }
public ScopeConcreteIdArgConditionCopyNonLazyBinder FromComponentInParents( bool excludeSelf = false, bool includeInactive = true) { BindingUtil.AssertIsInterfaceOrComponent(AllParentTypes); BindInfo.RequireExplicitScope = false; // Don't know how it's created so can't assume here that it violates AsSingle BindInfo.MarkAsCreationBinding = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, concreteType) => new MethodMultipleProviderUntyped(ctx => { Assert.That(ctx.ObjectType.DerivesFromOrEqual <MonoBehaviour>(), "Cannot use FromComponentSibling to inject data into non monobehaviours!"); Assert.IsNotNull(ctx.ObjectInstance); var monoBehaviour = (MonoBehaviour)ctx.ObjectInstance; var matches = monoBehaviour.GetComponentsInParent(concreteType, includeInactive) .Where(x => !ReferenceEquals(x, ctx.ObjectInstance)); if (excludeSelf) { matches = matches.Where(x => x.gameObject != monoBehaviour.gameObject); } var match = matches.FirstOrDefault(); if (match == null) { Assert.That(ctx.Optional, "Could not find any component with type '{0}' through FromComponentInParents binding", concreteType); return(Enumerable.Empty <object>()); } return(new object[] { match }); }, container)); return(this); }
protected ScopeConcreteIdArgConditionCopyNonLazyBinder FromComponentsInChildrenBase( bool excludeSelf, Func <Component, bool> predicate, bool includeInactive) { BindingUtil.AssertIsInterfaceOrComponent(AllParentTypes); BindInfo.RequireExplicitScope = false; // Don't know how it's created so can't assume here that it violates AsSingle BindInfo.MarkAsCreationBinding = false; SubFinalizer = new ScopableBindingFinalizer( BindInfo, (container, concreteType) => new MethodMultipleProviderUntyped(ctx => { Assert.That(ctx.ObjectType.DerivesFromOrEqual <MonoBehaviour>(), "Cannot use FromComponentsInChildren to inject data into non monobehaviours!"); Assert.IsNotNull(ctx.ObjectInstance); var monoBehaviour = (MonoBehaviour)ctx.ObjectInstance; var res = monoBehaviour.GetComponentsInChildren(concreteType, includeInactive) .Where(x => !ReferenceEquals(x, ctx.ObjectInstance)); if (excludeSelf) { res = res.Where(x => x.gameObject != monoBehaviour.gameObject); } if (predicate != null) { res = res.Where(predicate); } return(res.Cast <object>()); }, container)); return(this); }