public void AddDependency(IDependencyDescriptor descriptor) { var dependency = Convert(descriptor); if (this.Dependencies.Contains(dependency)) { return; } this.Dependencies.Add(dependency); }
protected override bool TryGetDependency(Type definition, out IDependencyDescriptor descriptor) { if (definition == typeof(IDependencyProvider)) { descriptor = _providerDescriptor; return(true); } descriptor = null; return(false); }
protected override bool TryGetDependency(Type definition, out IDependencyDescriptor descriptor) { if (definition == typeof(ILifetimeScope)) { descriptor = _scopeDescriptor; return(true); } descriptor = null; return(false); }
internal DependencyProviderCallStack CreateChild(IDependencyDescriptor descriptor) { if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } DependencyStack childStack = _dependencyStack.CreateChild(descriptor); childStack.EnsureParentNotSingleton(); childStack.EnsureNoCircularDependencies(); return(new DependencyProviderCallStack(LifetimeScope, childStack)); }
public DependencyProviderResolver(IDependencyProvider provider, IDependencyResolver innerResolver) { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } InnerResolver = (DependencyResolverBase)innerResolver ?? throw new ArgumentNullException(nameof(innerResolver)); _providerDescriptor = new ReferenceDependencyDescriptor(typeof(IDependencyProvider), _ => provider) { Lifetime = Lifetime.Scoped, Binding = Binding.Unbound }; }
public LifetimeScopeResolver(LifetimeScope lifetimeScope, IDependencyResolver innerResolver) { if (lifetimeScope == null) { throw new ArgumentNullException(nameof(lifetimeScope)); } InnerResolver = (DependencyResolverBase)innerResolver ?? throw new ArgumentNullException(nameof(innerResolver)); _scopeDescriptor = new ReferenceDependencyDescriptor(typeof(ILifetimeScope), _ => lifetimeScope.ParentScope ?? throw new InvalidScopeException()) { Lifetime = Lifetime.Singleton, Binding = Binding.Unbound }; }
protected virtual PackageDependency Convert(IDependencyDescriptor descriptor) { var version = new VersionSpec() { IsMaxInclusive = descriptor.IsMaxInclusive, IsMinInclusive = descriptor.IsMinInclusive, }; if (!string.IsNullOrEmpty(descriptor.MinVersion)) { version.MinVersion = new SemanticVersion(descriptor.MinVersion); } if (!string.IsNullOrEmpty(descriptor.MaxVersion)) { version.MaxVersion = new SemanticVersion(descriptor.MaxVersion); } var dependency = new PackageDependency(descriptor.Id, version); return(dependency); }
public static bool CheckIfAdded <TDefinition>(this IDependencyCollection collection, Action <IDependencyCollection> register) { IDependencyDescriptor descriptor = collection.Get <TDefinition>(); if (descriptor == null) { register.Invoke(collection); return(collection.HasDependency <TDefinition>()); } int oldHashCode = descriptor.GetHashCode(); register.Invoke(collection); descriptor = collection.Get <TDefinition>(); if (descriptor == null) { return(false); } return(oldHashCode != descriptor.GetHashCode()); }
public DependencyProviderCallStack(LifetimeScope lifetimeScope, IDependencyDescriptor descriptor) : base(lifetimeScope) { _dependencyStack = new DependencyStack(descriptor ?? throw new ArgumentNullException(nameof(descriptor))); }
/// <summary> /// Creates a new instance of <see cref="DependencyInstance"/>. /// </summary> /// <param name="instance">The instance of the dependency.</param> /// <param name="descriptor">The dependency descriptor of this instance.</param> public DependencyInstance(object instance, IDependencyDescriptor descriptor) { Descriptor = descriptor ?? throw new ArgumentNullException(nameof(descriptor)); Instance = instance ?? throw new ArgumentNullException(nameof(instance)); IsDisposable = instance.GetType().HasInterface <IDisposable>(); }
protected abstract bool TryGetDependency(Type definition, out IDependencyDescriptor descriptor);
protected override bool TryGetDependency(Type definition, out IDependencyDescriptor descriptor) { throw new NotImplementedException(); }
protected override bool TryGetDependency(Type definition, out IDependencyDescriptor descriptor) { descriptor = _dependencyCollection.Get(definition); return(descriptor != null); }
public CircularDependencyException(IDependencyDescriptor type) : base($"Circular dependencies found for {type.ImplementationType.Name}") { }