Unity Container, интерфейс бесконечного цикла - PullRequest
3 голосов
/ 16 декабря 2011

Мне нужна помощь с настройкой MS Unity.

У меня есть класс, реализующий интерфейс:

public class ProjectService : IProjectService

, который отлично работает с этой конфигурацией:

_conainer.RegisterType<IProjectService, ProjectService>();

И еще, кэширование, реализация, мне нужен первый конкретный тип, введенный в тип кэширования.

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

Как я могу настроить Unity, чтобы он возвращал версию с кэшированием с первой внедренной в нее реализацией?

1 Ответ

3 голосов
/ 16 декабря 2011

Это называется проводкой декораторов, которой вы можете достичь следующим образом:

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

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

Надеюсь, это поможет

...