行,所以我有一個基本類型:使用城堡溫莎創建一個對象,而不是一個工廠類
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