public IController ResolveHomeController()
		{
			var discountPolicy =
				new RepositoryBasketDiscountPolicy(
					this.ResolveDiscountRepository());

			var campaign = new DiscountCampaign(
				this.ResolveDiscountRepository());

			return new HomeController(
				campaign, discountPolicy);
		}
        public HomeController(DiscountCampaign campaign,
            BasketDiscountPolicy policy)
        {
            if (campaign == null)
            {
                throw new ArgumentNullException("campaign");
            }
            if (policy == null)
            {
                throw new ArgumentNullException("policy");
            }

            this.campaign = campaign;
            this.policy = policy;
        }
		public IController ResolveHomeController()
		{
			var connStr = ConfigurationManager
				.ConnectionStrings["CommerceObjectContext"]
				.ConnectionString;
			var repository =
				new SqlDiscountRepository(connStr);

			var discountCampaign =
				new DiscountCampaign(repository);
			var discountPolicy =
				new RepositoryBasketDiscountPolicy(repository);

			return new HomeController(discountCampaign, discountPolicy);
		}