Exemple #1
0
 private void EnsureProvideFunctionPresent(CachedServiceConfiguration serviceRecord)
 {
     if (serviceRecord.ProvideFunction == null)
     {
         throw new DependencyResolutionException(
                   $"Cannot provide service instance because provider function is null",
                   serviceRecord.ProvideType,
                   ServiceRegistry);
     }
 }
Exemple #2
0
        private object ProvideByInstance(CachedServiceConfiguration serviceRecord)
        {
            if (serviceRecord.Instance == null)
            {
                serviceRecord.Instance = serviceRecord.ProvideFunction.Invoke(this);
            }

            switch (serviceRecord.Lifetime)
            {
            case Lifetime.Transient:
                EnsureProvideFunctionPresent(serviceRecord);
                return(serviceRecord.ProvideFunction.Invoke(this));

            case Lifetime.Singleton:
                return(serviceRecord.Instance);

            default:
                return(serviceRecord.Instance);
            }
        }
Exemple #3
0
        private object ProvideByType(CachedServiceConfiguration serviceRecord)
        {
            var dependencies        = serviceRecord.ProvideType.GetConstructors().FirstOrDefault().GetParameters();
            var dependencyInstances = new List <object>();

            foreach (var dependency in dependencies)
            {
                dependencyInstances.Add(Resolve(dependency.ParameterType));
            }

            var instance = Activator.CreateInstance(serviceRecord.ProvideType, dependencyInstances.ToArray());

            if (serviceRecord.Lifetime == Lifetime.Singleton)
            {
                serviceRecord.Provisioning = Provisioning.ByInstance;
                serviceRecord.Instance     = instance;
            }

            return(instance);
        }