private void RegisterInternal(Type dependencyType, Type instanceType, Action <WeaklyTypedServiceConfigurator>?configurator, IConstructorResolver?constructorSelector, string callerFilePath, int callerLineNumber)
        {
            var metadata = new BindingMetadata(callerFilePath, callerLineNumber, Registrations.CurrentModule);
            var context  = new WeaklyTypedServiceConfigurator(dependencyType, instanceType, metadata, Settings, constructorSelector);

            configurator?.Invoke(context);
            ServiceBinding serviceBinding = context.ToBinding();

            Registrations.AddBinding(serviceBinding);
        }
Exemplo n.º 2
0
        private void RegisterInternal <TImplementation>(Action <StronglyTypedServiceConfigurator <TImplementation> >?configurator, SinglyLinkedListNode <Type> serviceTypes, string callerFilePath, int callerLineNumber)
        {
            var metadata = new BindingMetadata(callerFilePath, callerLineNumber, Registrations.CurrentModule);
            var context  = new StronglyTypedServiceConfigurator <TImplementation>(metadata, serviceTypes, Settings);

            configurator?.Invoke(context);
            ServiceBinding serviceBinding = context.ToBinding();

            Registrations.AddBinding(serviceBinding);
        }
Exemplo n.º 3
0
        private void RegisterInternal(SinglyLinkedListNode <Type> serviceTypes, Type implementationType, Action <WeaklyTypedServiceConfigurator>?configurator, string callerFilePath, int callerLineNumber)
        {
            var metadata = new BindingMetadata(callerFilePath, callerLineNumber, Registrations.CurrentModule);
            var context  = new WeaklyTypedServiceConfigurator(serviceTypes, implementationType, metadata, Settings);

            configurator?.Invoke(context);
            ServiceBinding serviceBinding = context.ToBinding();

            Registrations.AddBinding(serviceBinding);
        }
        private void RegisterInternal <TDependency, TInstance>(Action <StronglyTypedServiceConfigurator <TDependency, TInstance> >?configurator, IConstructorResolver?constructorSelector, string callerFilePath, int callerLineNumber)
            where TInstance : class, TDependency
        {
            var metadata = new BindingMetadata(callerFilePath, callerLineNumber, Registrations.CurrentModule);
            var context  = new StronglyTypedServiceConfigurator <TDependency, TInstance>(metadata, Settings, constructorSelector);

            configurator?.Invoke(context);
            ServiceBinding serviceBinding = context.ToBinding();

            Registrations.AddBinding(serviceBinding);
        }
Exemplo n.º 5
0
        internal T AddFinalizer <T>(T obj, ServiceBinding key)
            where T : class
        {
            SinglyLinkedListKeyNode <ServiceBinding, ActionList <object> >?initialValue, computedValue;

            do
            {
                initialValue = _finalizers;
                ActionList <object>?list = initialValue.GetOrDefault(key);
                if (list != null)
                {
                    list.Add(obj);
                    return(obj);
                }

                computedValue = initialValue.Add(key, new ActionList <object>(key.Finalizer !));
            }while (!ReferenceEquals(Interlocked.CompareExchange(ref _finalizers, computedValue, initialValue), initialValue));
            computedValue.Value.Add(obj);
            return(obj);
        }
Exemplo n.º 6
0
        internal T AddFinalizer <T>(T obj, ServiceBinding serviceBinding)
            where T : class
        {
            ActionList <object> list = Finalizers.GetOrDefault(serviceBinding);

            if (list != null)
            {
                list.Add(obj);
                return(obj);
            }

            lock (Finalizers)
            {
                list = Finalizers.GetOrDefault(serviceBinding);
                if (list == null)
                {
                    list = new ActionList <object>(serviceBinding.Finalizer !);
                    Finalizers.Add(serviceBinding, list);
                }
            }
            list.Add(obj !);
            return(obj);
        }
Exemplo n.º 7
0
 public void AddBinding(ServiceBinding serviceBinding)
 {
     Default = serviceBinding;
     Bindings.Add(serviceBinding);
 }
Exemplo n.º 8
0
 public Registration(Type dependencyType, ServiceBinding serviceBinding)
 {
     DependencyType = dependencyType;
     Default        = serviceBinding;
     Bindings       = new ArrayList <ServiceBinding>(new[] { serviceBinding });
 }
Exemplo n.º 9
0
 public void AddBinding(ServiceBinding serviceBinding)
 {
     Bindings.Add(serviceBinding);
 }
Exemplo n.º 10
0
 public Registration(ServiceBinding serviceBinding)
 {
     Bindings = new ArrayList <ServiceBinding>(new[] { serviceBinding });
 }