/// <summary>
        /// Determines whether a given type should be injected.
        /// </summary>
        /// <param name="member">The member info to check.</param>
        /// <returns><see langword="true"/> if a given type needs to be injected; otherwise <see langword="false"/>.</returns>
        public bool ShouldInject(MemberInfo member)
        {
            var propertyInfo = member as PropertyInfo;

            if (propertyInfo == null || propertyInfo.GetSetMethod(Settings.InjectNonPublic) == null)
            {
                return(false);
            }

            return(registeredTypes.Any(x => propertyInfo.DeclaringType.IsAssignableFrom(x)) &&
                   RegisteredTypes.Any(x => propertyInfo.PropertyType.IsAssignableFrom(x)) &&
                   propertyInfo.CanWrite);
        }