/// <summary>
        /// Create an instance of the <see cref="InstanceLookupBeginningEventArgs"/> class.
        /// </summary>
        /// <param name="instanceLookup">The instance lookup that is ending.</param>
        /// <param name="newInstanceActivated">True if a new instance was created as part of the operation.</param>
        public InstanceLookupEndingEventArgs(IInstanceLookup instanceLookup, bool newInstanceActivated)
        {
            if (instanceLookup == null) throw new ArgumentNullException(nameof(instanceLookup));

            InstanceLookup = instanceLookup;
            NewInstanceActivated = newInstanceActivated;
        }
Example #2
0
        public override Boolean CanSupplyValue(ParameterInfo pi, IComponentContext context, out Func <Object> valueProvider)
        {
            if (pi == null)
            {
                throw new ArgumentNullException("pi");
            }
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            IInstanceLookup lookup = context as IInstanceLookup;

            if (lookup != null)
            {
                IComponentRegistration registration;
                if (context.ComponentRegistry.TryGetRegistration(new TypedService(pi.ParameterType), out registration))
                {
                    Type restrictedType;
                    if (this._restrictingRegistrationModule.RestrictedRegistrations.TryGetValue(registration, out restrictedType))
                    {
                        Type callerType = lookup.ComponentRegistration.Activator.LimitType;
                        if (!(callerType == restrictedType || callerType.IsSubclassOf(restrictedType)))
                        {
                            throw new Exception(String.Format("Registration {0} is not compatible for type {1}", registration, callerType));
                        }
                    }
                    valueProvider = (() => context.ResolveComponent(registration, Enumerable.Empty <Parameter>()));
                    return(true);
                }
            }
            valueProvider = null;
            return(false);
        }
Example #3
0
 /// <summary>
 /// Create an instance of the <see cref="InstanceLookupCompletionEndingEventArgs"/> class.
 /// </summary>
 /// <param name="instanceLookup">The instance lookup that is ending the completion phase.</param>
 public InstanceLookupCompletionEndingEventArgs(IInstanceLookup instanceLookup)
 {
     if (instanceLookup == null)
     {
         throw new ArgumentNullException("instanceLookup");
     }
     _instanceLookup = instanceLookup;
 }
Example #4
0
 public InstanceLookupBeginningEventArgs(IInstanceLookup instanceLookup)
 {
     if (instanceLookup == null)
     {
         throw new ArgumentNullException("instanceLookup");
     }
     this._instanceLookup = instanceLookup;
 }
 void AttachToInstanceLookup(IInstanceLookup instanceLookup, ResolveOperationModel resolveOperation)
 {
     var instanceLookupModel = ModelMapper.GetInstanceLookupModel(instanceLookup, resolveOperation);
     Send(new InstanceLookupBeginningMessage(instanceLookupModel));
     instanceLookup.InstanceLookupEnding += (s, e) => Send(new InstanceLookupEndingMessage(instanceLookupModel.Id, e.NewInstanceActivated));
     instanceLookup.CompletionBeginning += (s, e) => Send(new InstanceLookupCompletionBeginningMessage(instanceLookupModel.Id));
     instanceLookup.CompletionEnding += (s, e) => Send(new InstanceLookupCompletionEndingMessage(instanceLookupModel.Id));
 }
Example #6
0
 /// <summary>
 /// Create an instance of the <see cref="InstanceLookupBeginningEventArgs"/> class.
 /// </summary>
 /// <param name="instanceLookup">The instance lookup that is ending.</param>
 /// <param name="newInstanceActivated">True if a new instance was created as part of the operation.</param>
 public InstanceLookupEndingEventArgs(IInstanceLookup instanceLookup, bool newInstanceActivated)
 {
     if (instanceLookup == null)
     {
         throw new ArgumentNullException("instanceLookup");
     }
     _instanceLookup       = instanceLookup;
     _newInstanceActivated = newInstanceActivated;
 }
        /// <param name="instanceLookup">The instance lookup that is ending.</param>
        public InstanceLookupBeginningEventArgs(IInstanceLookup instanceLookup)
        {
            if (instanceLookup == null)
            {
                throw new ArgumentNullException(nameof(instanceLookup));
            }

            InstanceLookup = instanceLookup;
        }
        void AttachToInstanceLookup(IInstanceLookup instanceLookup, ResolveOperationModel resolveOperation)
        {
            var instanceLookupModel = ModelMapper.GetInstanceLookupModel(instanceLookup, resolveOperation);

            Send(new InstanceLookupBeginningMessage(instanceLookupModel));
            instanceLookup.InstanceLookupEnding += (s, e) => Send(new InstanceLookupEndingMessage(instanceLookupModel.Id, e.NewInstanceActivated));
            instanceLookup.CompletionBeginning  += (s, e) => Send(new InstanceLookupCompletionBeginningMessage(instanceLookupModel.Id));
            instanceLookup.CompletionEnding     += (s, e) => Send(new InstanceLookupCompletionEndingMessage(instanceLookupModel.Id));
        }
 /// <summary>
 /// Create an instance of the <see cref="InstanceLookupCompletionEndingEventArgs"/> class.
 /// </summary>
 /// <param name="instanceLookup">The instance lookup that is ending the completion phase.</param>
 public InstanceLookupCompletionEndingEventArgs(IInstanceLookup instanceLookup)
 {
     if (instanceLookup == null) throw new ArgumentNullException("instanceLookup");
     _instanceLookup = instanceLookup;
 }
Example #10
0
 public static IResolveOperation Context(this IInstanceLookup instanceLookup)
 {
     return((IResolveOperation)ContextFieldInfo.GetValue(instanceLookup));
 }
        /// <summary>
        /// Create an instance of the <see cref="InstanceLookupCompletionBeginningEventArgs"/> class.
        /// </summary>
        /// <param name="instanceLookup">The instance lookup that is beginning the completion phase.</param>
        public InstanceLookupCompletionBeginningEventArgs(IInstanceLookup instanceLookup)
        {
            if (instanceLookup == null) throw new ArgumentNullException(nameof(instanceLookup));

            InstanceLookup = instanceLookup;
        }
 /// <summary>
 /// Create an instance of the <see cref="InstanceLookupBeginningEventArgs"/> class.
 /// </summary>
 /// <param name="instanceLookup">The instance lookup that is ending.</param>
 /// <param name="newInstanceActivated">True if a new instance was created as part of the operation.</param>
 public InstanceLookupEndingEventArgs(IInstanceLookup instanceLookup, bool newInstanceActivated)
 {
     if (instanceLookup == null) throw new ArgumentNullException("instanceLookup");
     _instanceLookup = instanceLookup;
     _newInstanceActivated = newInstanceActivated;
 }
Example #13
0
 public InstanceLookupModel GetInstanceLookupModel(IInstanceLookup instanceLookup, ResolveOperationModel resolveOperation)
 {
     return(new InstanceLookupModel(NewId(), resolveOperation.Id, GetComponentId(instanceLookup.ComponentRegistration), _idTracker.GetIdOrUnknown(instanceLookup.ActivationScope), Enumerable.Empty <ParameterModel>()));
 }
Example #14
0
 public InstanceLookupModel GetInstanceLookupModel(IInstanceLookup instanceLookup, ResolveOperationModel resolveOperation)
 {
     return new InstanceLookupModel(NewId(), resolveOperation.Id, GetComponentId(instanceLookup.ComponentRegistration), _idTracker.GetIdOrUnknown(instanceLookup.ActivationScope), Enumerable.Empty<ParameterModel>());
 }