2010-08-26 27 views
1

查看Karl Seguin在其中展示的關於可測試性設計的帖子,可以獲得更好的設計,在這種情況下,composition over inheritance構圖及結構圖

在這個例子中,他的CachedEmployeeLookup有一個EmployeeLookup,這既實現了相同的接口的依賴,IEmployeeLookup

你怎麼會在StructureMap使程序使用的默認類是CachedEmployeeLookupCachedEmployeeLookup得到配置此一個EmployeeLookup注入它?

回答

1

我覺得像這樣的工作:

For<IEmployeeLookup>().Add<EmployeeLookup>(). 
    Named("employeeLookup"); 

For<IEmployeeLookup>().Use<CachedEmployeeLookup>() 
    .Ctor<IEmployeeLookup>().Is(
    d => d.TheInstanceNamed("employeeLookup")); 
+0

糟糕!有錯誤的默認對象。更改默認爲正確。 – PHeiberg 2010-08-26 14:05:25

1

您可以在設置類型的映射,例如,當使用EnrichWith

ObjectFactory.Initialize(i => 
{ 
    i.For<IDecorator>().Use<Inner>().EnrichWith(d => new Decorator(d)); 
}); 

This page具有攔截的一些例子中StructureMap