Unity容器,接口无限循环

时间:2011-12-15 20:08:26

标签: inversion-of-control unity-container containers

我需要有关配置MS Unity的帮助。

我有一个实现接口的类:

public class ProjectService : IProjectService

使用此配置可​​以正常工作:

_conainer.RegisterType<IProjectService, ProjectService>();

我另一个,缓存,实现,我需要第一个注入缓存混凝土类型的具体类型。

public class CachedProjectService : IProjectService
{
    public CachedProjectService(IProjectService projectService, ICacheStorage cacheStorage)
    {}
}

如何配置Unity以返回缓存版本并注入第一个实现?

1 个答案:

答案 0 :(得分:3)

它被称为装饰器布线,你可以这样做:

_container.RegisterType<IProjectService, ProjectService>("innerService");

_container.RegisterType<IProjectService, CachedProjectService>(
    new InjectionConstructor(
        new ResolvedParameter<IProjectService>("innerService"), 
        new ResolvedParameter<ICacheStorage>()
    ));

希望有所帮助