public bool TryResolve(Type serviceType, out object instance)
        {
            instance = null;
            var profile = ResolveProfiles.Find(serviceType, this, Registrations);

            return(profile != null && profile(Registrations(), this, out instance));
        }
Esempio n. 2
0
        public override bool TryResolve(IDependencyRegistrationCollection registrations, ResolveContext resolveContext, out object instance)
        {
            var serviceTypeRegistrations = registrations[typeof(T)].ToArray();

            instance = null;
            var instances = new T[serviceTypeRegistrations.Length];

            for (var i = 0; i < serviceTypeRegistrations.Length; i++)
            {
                var profile = ResolveProfiles.Find(resolveContext, serviceTypeRegistrations[i]);
                if (!profile(registrations, resolveContext, out instance))
                {
                    throw new DependencyResolutionException($"Could not resolve an enumerable for {serviceTypeRegistrations[i].ConcreteType}");
                }
                instances[i] = (T)instance;
            }

            instance = instances;

            return(true);
        }
        public override bool TryResolve(IDependencyRegistrationCollection registrations, ResolveContext resolveContext, out object instance)
        {
            var serviceTypeRegistrations = registrations[typeof(T)].ToArray();

            instance = null;
            var instances = new T[serviceTypeRegistrations.Length];

            for (var i = 0; i < serviceTypeRegistrations.Length; i++)
            {
                var profile = ResolveProfiles.Find(resolveContext, serviceTypeRegistrations[i]);
                if (!profile(registrations, resolveContext, out instance))
                {
                    return(false);
                }
                instances[i] = (T)instance;
            }

            instance = instances;

            return(true);
        }
Esempio n. 4
0
            public static ProfileResolver Find(ResolveContext context, DependencyRegistration registration)
            {
                var serviceType = registration.ServiceType;

                if (serviceType.IsGenericType == false ||
                    serviceType.GetGenericTypeDefinition() != typeof(Func <>))
                {
                    return(null);
                }

                var innerType    = serviceType.GetGenericArguments()[0];
                var innerProfile = ResolveProfiles.Find(context, registration);

                ProfileResolver getTypedResolver(ProfileResolver resolver)
                {
                    var profile =
                        (ResolveProfile)Activator.CreateInstance(typeof(FuncProfile <>).MakeGenericType(innerType), innerProfile);

                    return(profile.TryResolve);
                }

                return(innerProfile != null?getTypedResolver(innerProfile) : null);
            }