How to use Windsor IoC in ASP.net Core 2

前端 未结 4 1165
甜味超标
甜味超标 2021-01-31 19:00

How can I use Castle Windsor as an IOC instead of the default .net core IOC container?

I have built a service resolver that depends on WindsorContainer to r

4条回答
  •  渐次进展
    2021-01-31 19:27

    For others Reference In addition to the solution Nkosi provided.

    There is a nuget package called Castle.Windsor.MsDependencyInjection that will provide you with the following method:

    WindsorRegistrationHelper.CreateServiceProvider(WindsorContainer,IServiceCollection);
    

    Which's returned type is IServiceProvider and you will not need to create you own wrapper.

    So the solution will be like:

    public class ServiceResolver{    
        private static WindsorContainer container;
        private static IServiceProvider serviceProvider;
    
        public ServiceResolver(IServiceCollection services) {
            container = new WindsorContainer();
            //Register your components in container
            //then
            serviceProvider = WindsorRegistrationHelper.CreateServiceProvider(container, services);
        }
    
        public IServiceProvider GetServiceProvider() {
            return serviceProvider;
        }    
    }
    

    and in Startup...

    public IServiceProvider ConfigureServices(IServiceCollection services) {
        services.AddMvc();
        // Add other framework services
    
        // Add custom provider
        var container = new ServiceResolver(services).GetServiceProvider();
        return container;
    }
    

提交回复
热议问题