/// <inheritdoc/> public void Register(IOpenGenericBinding openGenericBinding) { lock (syncLock) { IBindingInternal internalBinding = (IBindingInternal)openGenericBinding; ValidateInternalBinding(internalBinding); genericBindingRresolver.Register(internalBinding); } }
/// <inheritdoc/> public void Register(IMembersBinding membersBinding) { lock (syncLock) { IBindingInternal internalBinding = (IBindingInternal)membersBinding; ValidateInternalBinding(internalBinding); BindExplicit(internalBinding); } }
private IResolver BindExplicit(IBindingInternal internalBinding) { try { return((IResolver)bindExplicitGeneric .MakeGenericMethod(internalBinding.BindingKey.BindingType, internalBinding.ConcreteType) .Invoke(this, new object[] { internalBinding.BindingKey, internalBinding.BindingConfig })); } catch (TargetInvocationException ex) { throw ex.InnerException; } }
private void ValidateInternalBinding(IBindingInternal internalBinding) { var bindingKey = internalBinding.BindingKey; if (typeof(Injector).Equals(bindingKey.BindingType)) { throw InjectorErrors.ErrorMayNotBindInjector.FormatEx(); } if (resolveCalled && !bindingKey.IsImplicit) { throw InjectorErrors.ErrorBindingRegistrationNotPermitted.FormatEx(); } }
/// <summary> /// Register the specified openGeneric binding. /// </summary> /// <param name="openGenericBinding">Open generic binding.</param> internal void Register (IBindingInternal openGenericBinding) { allGenericResolvers.Add (openGenericBinding.BindingKey, openGenericBinding.BindingConfig); }