行,所以我有一个基本类型:使用城堡温莎创建一个对象,而不是一个工厂类
ProductBase
,然后我有一些产品:
Product1: ProductBase
Product2: ProductBase
Product3: ProductBase
然后,工厂类:
public class productFactory
{
public productBase GetProduct(Enums.product buildProduct)
{
var outProduct = new ProductBase();
switch (buildProduct)
{
case Enums.Products.Product1:
outMis = new Product1();
break;
case Enums.Products.Product2:
outMis = new Product2();
break;
default:
outMis = new Product1();
break;
}
return outProduct;
}
}
我知道windsor可以做到这一点,我知道这是一件好事。
据我所见,productBase将需要成为一个接口,产品实现它,但是我需要通过windsor中的enum开关来实现它们?
帮助和指针(链接)赞赏。这是在一个MVC.net 3项目中,我为控制器和日志记录设置了windsor,所以我得到了一点 - 尽管在我对IoC和DI的理解方面存在巨大差距!
这样做是这样的,在地方的productFactory
要回答我的问题的一种方式 - 从这里开始: http://codeblitz.wordpress.com/2009/05/06/using-factory-method-pattern-with-systemactivator/
,而不是使用productFactory:
public class productFactory
{
public static MisProduct CreateProduct(Enums.Product productType)
{
string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
//creates an instance based on the enum name
ProductBase myProduct = Activator.CreateInstance(
null,
string.Format("{0}.Models.Products.{1}", assemblyName, productType)
).Unwrap() as ProductBase;
if (myProduct == null)
{
//todo throw an Exception here.
}
return myProduct;
}
}
任何更多的建议吗?
要回答我的问题 - 从这里开始: http://codeblitz.wordpress.com/2009/05/06/using-factory-method-pattern-with-systemactivator/ ,而不是使用productFactory: – nathfy 2012-02-21 13:14:43