图片 1

MVC
Core的转移感觉挺大的,须要的功效大多从Nuget安装,还停放了IOC,协理SelfHost格局运行等等。

一、项目布局的扭转
成立的新MVC项目标协会暴发了变动,比如:静态文件须要统一放置到wwwroot文件夹,配置文件变成了appsettings.json,用startup.cs文件替代了global文件;原先对view命名空间的引用配置在view下的web.config,现在则改成了拔取_ViewImport.cshtml文件,并且用razor语法来配置。

二、内置IOC
a)Autofac是很好的IOC容器,.Net
Core下也还是能用的,同时Core也置于了IOC,typescript也自带IOC,也许注入的措施会作为语言本身的一种功用吗。
嵌入IOC也支撑选取各样对象生命周期,比如Transient(内次请求都会实例化)、Scoped(每一回Web请求)、Singleton(整个应用的生命周期)。
b)单个对象的注入只需在Startup.ConfigureServices中设置:services.AddSingleton(typeof(Person));
其后在用到Person的地方通过构造函数注入。
c)实际利用了不容许选拔单个对象的注入的主意,根据程序集来配置活动注入的法门为:
var serviceAsm = Assembly.Load(new AssemblyName(“2_1 MVC Core Lib”));
var serviceTypes = serviceAsm.GetTypes().Where(t =>
typeof(IServiceTag)
 .IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
foreach (var serviceType in serviceTypes) {
  var interfaceTypes = serviceType.GetInterfaces().Where(t => t.Name
!= “IServiceTag”);
  foreach (var interfaceType in interfaceTypes) {
    services.AddSingleton(interfaceType, serviceType);
  }
}
增加t.Name !=
“IServiceTag”的限制是有必要的,IServiceTag是瑟维斯接口的符号,如若不扩大那些判断,会将IServiceTag也注入。

d)IOC可以“递归”注入,但要保障根对象也是被IOC创造的,而不是显式new出来的。比如如若用IOC创造ExceptionFilter,那么它自己引用的其他类也得以活动注入了。手动用IOC创设nFilter并添加到MVC中的方法为:
services.AddMvc(options => {
  var serviceProvider = services.BuildServiceProvider();
  var filter = serviceProvider.GetService<ExceptionFilter>();
  options.Filters.Add(filter);
});

在前者代码中仍能用HttpContext.RequestServices.GetService来让IOC创造对象。

上学资料:如鹏网.net升高班http://www.rupeng.com/News/10/4603.shtml

相关文章

网站地图xml地图