コード例 #1
0
		public ICarProvider Create(User currentUser)
		{
			if (currentUser.FiscalStability == FiscalStability.MrMoneyBags)
				return new FerrariProvider();
			else
				return new HondaProvider();
		}
		public void RegisterWithFactoryMethod()
		{
			var user = new User { FiscalStability = FiscalStability.DirtFarmer };
			Kernel.Register(
				Component.For<AbstractCarProviderFactory>(),
				Component.For<ICarProvider>()
					.UsingFactoryMethod(() => new AbstractCarProviderFactory().Create(user))
				);
			Assert.IsInstanceOf(typeof(HondaProvider), Kernel.Resolve<ICarProvider>());
		}
コード例 #3
0
		private void RegisterComponentsImplemtedByFerrari(User user)
		{
			kernel.Register(
				Component.For<User>().Named("currentUser").Instance(user),
				Component.For<AbstractCarProviderFactory>().Named("AbstractCarProviderFactory"),
				Component.For<ICarProvider>()
					.ImplementedBy<FerrariProvider>()
					.Attribute("factoryId").Eq("AbstractCarProviderFactory")
					.Attribute("factoryCreate").Eq("Create")
				);
		}
		public void RegisterWithFactoryMethodAndKernel()
		{
			var user = new User { FiscalStability = FiscalStability.MrMoneyBags };
			Kernel.Register(
				Component.For<User>().Instance(user),
				Component.For<AbstractCarProviderFactory>(),
				Component.For<ICarProvider>()
					.UsingFactoryMethod(k => new AbstractCarProviderFactory().Create(k.Resolve<User>()))
				);
			Assert.IsInstanceOf(typeof(FerrariProvider), Kernel.Resolve<ICarProvider>());
		}
コード例 #5
0
		public void can_register_without_providing_an_implementation()
		{
			var user = new User() { FiscalStability = FiscalStability.DirtFarmer };
			kernel.Register(
				Component.For<User>().Named("currentUser").Instance(user),
				Component.For<AbstractCarProviderFactory>().Named("AbstractCarProviderFactory"),
				Component.For<ICarProvider>()
					.Attribute("factoryId").Eq("AbstractCarProviderFactory")
					.Attribute("factoryCreate").Eq("Create")
				);
			Assert.IsInstanceOfType(typeof(HondaProvider), kernel.Resolve<ICarProvider>());
		}
コード例 #6
0
		public void RegisterWithFluentFactory()
		{
			var user = new User { FiscalStability = FiscalStability.DirtFarmer };
			kernel.Register(
				Component.For<User>().Instance(user),
				Component.For<AbstractCarProviderFactory>(),
				Component.For<ICarProvider>()
					.UsingFactory((AbstractCarProviderFactory f) => f.Create(kernel.Resolve<User>()))
				);
			Assert.IsInstanceOf(typeof(HondaProvider), kernel.Resolve<ICarProvider>());
		}