C# 动态IoC控制器解析ASP.NET 5

C# 动态IoC控制器解析ASP.NET 5,c#,asp.net,asp.net-mvc,asp.net-core,dnx,C#,Asp.net,Asp.net Mvc,Asp.net Core,Dnx,我试图创建一个类似于Mvc的路由系统,在这个系统中,用户创建类/控制器,HTTP请求被路由到它们。我有了所有的基础知识,它在很大程度上通过使用反射工作 当我尝试使用IoC/依赖项注入/服务解析器时,问题就出现了。我希望人们能够创建一个注入服务的控制器(就像mvc一样),只需在构造函数中声明所需内容并将其添加到IoC容器中即可。我能够通过/使用System.IServiceProvider调用所需控制器类型上的GetService(类型)。但是,除非我专门将控制器类型添加到IoC容器中,否则这不起

我试图创建一个类似于Mvc的路由系统,在这个系统中,用户创建类/控制器,HTTP请求被路由到它们。我有了所有的基础知识,它在很大程度上通过使用反射工作

当我尝试使用IoC/依赖项注入/服务解析器时,问题就出现了。我希望人们能够创建一个注入服务的控制器(就像mvc一样),只需在构造函数中声明所需内容并将其添加到IoC容器中即可。我能够通过/使用System.IServiceProvider调用所需控制器类型上的GetService(类型)。但是,除非我专门将控制器类型添加到IoC容器中,否则这不起作用。我们不需要在Mvc中为IoC注册控制器,所以我确信有一个解决方法


我尝试过使用反射从运行的程序集/appdomain中查找所有“ControllerBase”子类,并在启动时将它们添加到IServiceProvider/IServiceCollection?但是,迁移到ASP.NET 5/Dnx core 5似乎改变了appdomains和程序集的工作方式或访问方式。关于如何在用户不必注册每个控制器的情况下自动完成这一点的任何指导都是非常好的。另外,关于mvc如何做到这一点的任何信息都非常有用。

使用依赖项注入创建对象实例的代码:

public void ConfigureServices(IServiceCollection services)
{
    HomeController controller;

    var controllerFactory = Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateFactory(typeof(HomeController), Type.EmptyTypes);
    controller = (HomeController)controllerFactory(services.BuildServiceProvider(), null);
}
要创建类型,请使用MVC实例。它使用静态对象