/// <summary>
        /// Returns the dependencies required by the current implementation.
        /// </summary>
        /// <param name="map">The implementation map.</param>
        /// <returns>The list of required dependencies required by the current implementation.</returns>
        public IEnumerable <IDependency> GetRequiredDependencies(IDependencyContainer map)
        {
            var requiredDependencies = _implementation.GetRequiredDependencies(map);
            var dependencyList       = new List <IDependency>(requiredDependencies);
            var results = new HashedSet <IDependency>(dependencyList);

            var properties = TargetType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

            foreach (var property in properties)
            {
                // Skip properties that don't meet the filter criteria
                if (!_propertyFilter(property) || !property.CanWrite)
                {
                    continue;
                }

                var dependency = _propertyDependencyResolver(property);
                if (dependency == null || results.Contains(dependency))
                {
                    continue;
                }

                results.Add(dependency);
            }

            return(results);
        }
示例#2
0
 /// <summary>
 /// Returns the dependencies required by the current implementation.
 /// </summary>
 /// <returns>The list of required dependencies required by the current implementation.</returns>
 public IEnumerable <IDependency> GetRequiredDependencies(IDependencyContainer map)
 {
     return(_actualImplementation.GetRequiredDependencies(map));
 }