Использование Autofac для предоставления типов, экспортируемых статической фабрикой - PullRequest
0 голосов
/ 15 октября 2011

У меня есть зависимость, которая предоставляет ряд сервисов, использующих его статический ServiceManager.Он также предоставляет список доступных типов.

Type[] ServiceManager.GetServiceTypes();
object GetService(Type t);

В модуле Autofac я хотел бы перечислить эти типы и зарегистрировать их «динамическое создание».Важно, чтобы я вызывал ServiceManager.GetService каждый раз, когда запрашивается экземпляр.

1 Ответ

0 голосов
/ 15 октября 2011

Я закончил тем, что использовал свой собственный RegistrationBuilder, выглядит довольно забавно, но он работает.Я пропустил очевидный трюк?

        foreach (var type in ServiceManager.GetServiceTypes())
        {
            var rb = RegistrationBuilder.ForDelegate(
                type, 
                (ctx, parms) => ServiceManager.GetService(type))
                .ExternallyOwned();

            builder.RegisterCallback(
                cr => RegistrationBuilder.RegisterSingleComponent(cr, rb));
        }
...