如何创建一个类的实例并注入服务?

FLC*_*LCL 5 c# asp.net-mvc dnx

新的aspnet具有内置的依赖项注入:启动类实例接收服务,控制器,查看组件。我有什么方法可以创建类的对象并使用aspnet功能传递服务吗?就像是:

WebApplicationClassesActivator.Create(typeof(MyClass))
Run Code Online (Sandbox Code Playgroud)

例如,其中MyClass包含构造函数接收IHostingEnvironment实例。

实际用法:

public class MyController : Controller
{
    private readonly IContext Context;
    public MyController(IContext context)
    {
        Context = context;
    }
    public IActionResult Index(string className)
    {            
        return View(WebApplicationClassesActivator.Create(Type.GetType(className)));
    }
}
Run Code Online (Sandbox Code Playgroud)

classsName类名在哪里:

public class A
{
    public A(IContext context, IHostingEnvironment env)
    {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

FLC*_*LCL 11

程序集Microsoft.Extensions.DependencyInjection.Abstractions包含ActivatorUtilities我需要的静态类:

public static object CreateInstance(IServiceProvider provider, 
                                    Type instanceType, 
                                    params object[] parameters);
Run Code Online (Sandbox Code Playgroud)

我可以创建实例并注入服务:

private readonly IServiceProvider Provider;

public HomeController(IServiceProvider provider)
{       
    Provider = provider;
}

public IActionResult Index()
{       
    var instance = ActivatorUtilities.CreateInstance(Provider, typeof(A));

    return View(instance);
}

public class A
{
    public A(IContext context)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)