public MembershipViewService(
            IMyAccountUrlProvider myAccountUrlProvider,
            IViewModelMapper viewModelMapper,
            ICustomerRepository customerRepository,
            ICartMergeProvider cartMergeProvider)
        {
            if (myAccountUrlProvider == null)
            {
                throw new ArgumentNullException("myAccountUrlProvider");
            }
            if (viewModelMapper == null)
            {
                throw new ArgumentNullException("viewModelMapper");
            }
            if (customerRepository == null)
            {
                throw new ArgumentNullException("customerRepository");
            }
            if (cartMergeProvider == null)
            {
                throw new ArgumentNullException("cartMergeProvider");
            }

            Membership = new StaticMembershipProxy();

            MyAccountUrlProvider = myAccountUrlProvider;
            ViewModelMapper      = viewModelMapper;
            CustomerRepository   = customerRepository;
            CartMergeProvider    = cartMergeProvider;
        }
        public MembershipViewService(
            IMyAccountUrlProvider myAccountUrlProvider,
            IViewModelMapper viewModelMapper,
            ICustomerRepository customerRepository,
            ICartMergeProvider cartMergeProvider)
        {
            Membership = new StaticMembershipProxy();

            MyAccountUrlProvider = myAccountUrlProvider ?? throw new ArgumentNullException(nameof(myAccountUrlProvider));
            ViewModelMapper      = viewModelMapper ?? throw new ArgumentNullException(nameof(viewModelMapper));
            CustomerRepository   = customerRepository ?? throw new ArgumentNullException(nameof(customerRepository));
            CartMergeProvider    = cartMergeProvider ?? throw new ArgumentNullException(nameof(cartMergeProvider));
        }
        public MembershipViewService(
            IMyAccountUrlProvider myAccountUrlProvider,
            IViewModelMapper viewModelMapper,
            ICustomerRepository customerRepository,
            ICartMergeProvider cartMergeProvider,
            IComposerContext composerContext,
            IRegexRulesProvider regexRulesProvider)
        {
            Membership = new StaticMembershipProxy();

            MyAccountUrlProvider = myAccountUrlProvider ?? throw new ArgumentNullException(nameof(myAccountUrlProvider));
            ViewModelMapper      = viewModelMapper ?? throw new ArgumentNullException(nameof(viewModelMapper));
            CustomerRepository   = customerRepository ?? throw new ArgumentNullException(nameof(customerRepository));
            CartMergeProvider    = cartMergeProvider ?? throw new ArgumentNullException(nameof(cartMergeProvider));
            ComposerContext      = composerContext ?? throw new ArgumentNullException(nameof(composerContext));
            RegexRulesProvider   = regexRulesProvider ?? throw new ArgumentNullException(nameof(regexRulesProvider));
        }