Exemplo n.º 1
0
 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));
 }
Exemplo n.º 10
0
 public static void AddRequiringDependency(RequirementDefinitionBase requirement, DependencyDefinitionBase dependency)
 {
     PrivateInvoke.InvokeNonPublicMethod(requirement.RequiringDependencies, "Add", dependency);
 }