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)