/// <summary>
        /// Sets up a method rule.
        /// </summary>
        /// <param name="selector">The selector.</param>
        /// <returns>The <see cref="IRulesConfiguration"/>.</returns>
        public IRulesConfiguration RuleForMethod(Action <MemberSelector <MethodInfo> > selector)
        {
            CheckMemberInfo(shouldExist: false);
            var methodSelector = new MemberSelector <MethodInfo>();

            selector(methodSelector);
            memberInfo  = methodSelector.Member;
            rulePending = true;
            return(this);
        }
        /// <summary>
        /// Sets up a property rule.
        /// </summary>
        /// <param name="selector">The selector.</param>
        /// <returns>The <see cref="IRulesConfiguration"/>.</returns>
        public IRulesConfiguration RuleForProperty(Action <MemberSelector <PropertyInfo> > selector)
        {
            CheckMemberInfo(shouldExist: false);
            var propSelector = new MemberSelector <PropertyInfo>();

            selector(propSelector);
            memberInfo  = propSelector.Member;
            rulePending = true;
            return(this);
        }
        /// <summary>
        /// Sets up a constructor rule.
        /// </summary>
        /// <param name="selector">The selector.</param>
        /// <returns>The <see cref="IRulesConfiguration"/>.</returns>
        public IRulesConfiguration RuleForConstructor(Action <MemberSelector <ConstructorInfo> > selector)
        {
            CheckMemberInfo(shouldExist: false);
            var ctorSelector = new MemberSelector <ConstructorInfo>();

            selector(ctorSelector);
            memberInfo  = ctorSelector.Member;
            rulePending = true;
            return(this);
        }