2010-08-26 28 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