Как вы разрешаете экземпляры IInterceptionBehavior из контейнера при использовании StructureMap DynamicProxyInterceptor?

Я перехожу с Unity на StructureMap. Я немного использовал Unception InterceptionBehavior.

Я думал, что мог бы переключить это на использование StructureMap .InterceptWith и DynamicProxyInterceptor но у моих перехватчиков есть зависимости, и я не могу понять, как составить перехватчики, используя StructureMap.

var container = new Container(x =>
        {
            x.For<IMathService>().Use<MathService>()
                .InterceptWith(new DynamicProxyInterceptor<IMathService>(new IInterceptionBehavior[]
                {
                    // I WANT TO COMPOSE THESE INTERCEPTORS
                    new NegatingInterceptor(), 
                    new CachingInterceptor()
                }));
        });

На данный момент единственное, что я могу подумать, что это может быть решением - это выставить мой IContainer из статического класса IoC и разрешить мои зависимости вручную в моем перехватчике.

В конце концов, я, вероятно, смогу заменить свои динамические прокси декораторами, но я еще не совсем на этом этапе. Я просто хочу как можно скорее запустить и снова запустить его, чтобы я мог доказать, что все остальные изменения были успешными, прежде чем я начну вносить дополнительные изменения.

1 ответ

Решение

Хорошо, я идиот, вы просто передаете массив типов вместо экземпляров конструктору DynamicProxyInterceptor

var container = new Container(x =>
    {
        x.For<IMathService>().Use<MathService>()
            .InterceptWith(new DynamicProxyInterceptor<IMathService>(
            new Type[]
            {
                // I WANT TO COMPOSE THESE INTERCEPTORS
                typeof(NegatingInterceptor), 
                typeof(CachingInterceptor)
            }));
    });
Другие вопросы по тегам