protected override void AddDependency(DependencyDefinitionBase dependency) { ArgumentUtility.CheckNotNull("dependency", dependency); if (!_mixin.NextCallDependencies.ContainsKey(dependency.RequiredType.Type)) { _mixin.NextCallDependencies.Add((NextCallDependencyDefinition)dependency); } }
private void CheckForAggregate(DependencyDefinitionBase dependency) { ArgumentUtility.CheckNotNull("dependency", dependency); if (dependency.RequiredType.IsAggregatorInterface) { foreach (Type type in dependency.RequiredType.Type.GetInterfaces()) { DependencyDefinitionBase innerDependency = BuildDependency(type, dependency); dependency.AggregatedDependencies.Add(innerDependency); } } }
public void Apply(IEnumerable <Type> dependencyTypes) { ArgumentUtility.CheckNotNull("dependencyTypes", dependencyTypes); foreach (Type type in dependencyTypes) { if (!type.Equals(typeof(object))) // dependencies to System.Object are always fulfilled and not explicitly added to the configuration { DependencyDefinitionBase dependency = BuildDependency(type, null); AddDependency(dependency); } } }
private DependencyDefinitionBase BuildDependency(Type type, DependencyDefinitionBase aggregator) { ArgumentUtility.CheckNotNull("type", type); RequirementDefinitionBase requirement = GetRequirement(type); if (requirement == null) { requirement = CreateRequirement(type); AddRequirement(requirement); } DependencyDefinitionBase dependency = CreateDependency(requirement, aggregator); requirement.RequiringDependencies.Add(dependency); CheckForAggregate(dependency); return(dependency); }
protected abstract void AddDependency(DependencyDefinitionBase dependency);
protected abstract DependencyDefinitionBase CreateDependency(RequirementDefinitionBase requirement, DependencyDefinitionBase aggregator);
protected override DependencyDefinitionBase CreateDependency(RequirementDefinitionBase requirement, DependencyDefinitionBase aggregator) { ArgumentUtility.CheckNotNull("requirement", requirement); return(new MixinDependencyDefinition((RequiredMixinTypeDefinition)requirement, _mixin, (MixinDependencyDefinition)aggregator)); }
protected override void AddDependency(DependencyDefinitionBase dependency) { ArgumentUtility.CheckNotNull("dependency", dependency); _targetClass.ComposedInterfaceDependencies.Add((ComposedInterfaceDependencyDefinition)dependency); }
protected override DependencyDefinitionBase CreateDependency(RequirementDefinitionBase requirement, DependencyDefinitionBase aggregator) { return(new ComposedInterfaceDependencyDefinition((RequiredTargetCallTypeDefinition)requirement, _composedInterface, aggregator)); }
public static void AddRequiringDependency(RequirementDefinitionBase requirement, DependencyDefinitionBase dependency) { PrivateInvoke.InvokeNonPublicMethod(requirement.RequiringDependencies, "Add", dependency); }