/// <summary> /// Adds the given member selection rule to the correct member selection collection. /// </summary> /// <param name="memberSelectionRule">The member selection rule to add.</param> /// <returns>Returns the current instance.</returns> private CreateInstanceOptions <T> AddMemberSlectionRule(IMemberSelectionRule memberSelectionRule) { switch (_currentMemberSelectionTarget) { case MemberSelectionRuleTarget.Member: MemberSelectionRules.Add(memberSelectionRule); break; case MemberSelectionRuleTarget.MemberChildren: MemberChildrenSelectionRules.Add(memberSelectionRule); break; case MemberSelectionRuleTarget.Factory: _currentFactory?.AddSelectionRule(memberSelectionRule); break; default: throw new ArgumentOutOfRangeException(nameof(_currentMemberSelectionTarget), _currentMemberSelectionTarget, $"The member selection target '{_currentMemberSelectionTarget}' is not supported."); } return(this); }