Esempio n. 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);
        }
Esempio n. 2
0
 private static IEnumerable <ResourceProperty> discoverResourceProperties(Type t) =>
 t.GetProperties()
 .Where(DependencyUtils.IsUserFacingProperty)
 .Select(property => {
     var dependencyAttribute = DependencyUtils.GetDependencyAttribute(property);
     return(new ResourceProperty()
     {
         Name = property.Name,
         Type = formatPropertyType(property),
         Description = dependencyAttribute?.Description
     });
 });