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

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

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

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


person James L    schedule 15.10.2011    source источник


Ответы (1)


В итоге я использовал свой собственный 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));
        }
person James L    schedule 15.10.2011