Example #1
0
        private IEnumerable <DependencyRequirement> getResourceDependencyRequirements(IResource resource)
        {
            var requirements =
                context.ExplicitDependencyRequirements.ContainsKey(resource) ?
                context.ExplicitDependencyRequirements[resource] :
                new List <DependencyRequirement>();
            var propertiesWithTypeResourceAndSetters = resource.GetType().GetProperties()
                                                       .Where(DependencyUtils.PropertyIsResource)
                                                       .Where(DependencyUtils.PropertiesHasSetter);

            foreach (var property in propertiesWithTypeResourceAndSetters)
            {
                var dependencyAttribute = DependencyUtils.GetDependencyAttribute(property);
                var propertyIsAlreadyInExplicitRequirements = requirements.Any(requirement => requirement.Property.Name == property.Name);
                var propertyIsAnOptionalDependency          = dependencyAttribute != null ? dependencyAttribute.Optional : false;
                if (!propertyIsAlreadyInExplicitRequirements &&
                    !propertyIsAnOptionalDependency)
                {
                    var missingDependency = new DependencyRequirement {
                        Property  = property,
                        ValueName = "default"
                    };
                    requirements.Add(missingDependency);
                }
            }
            return(requirements);
        }
Example #2
0
        private static void InjectDependency(IResource resource, DependencyRequirement dependencyRequirement, IResource correspondingDependency)
        {
            var resourceType = resource.GetType();

            dependencyRequirement.Property.SetValue(resource, correspondingDependency);
        }