여전히 인터넷 Core3.0 정지 유지 보수에 천천히 이전 버전을 의미합니다 .NET 코어 3.1 릴리스로 큰 차이와 인터넷 코어 2.X.
넷 코어 3.0은 우리가 손을 연습하기위한, 실제로 이행 버전입니다.
ASP.NET 코어 2.2迁移到3.0 : https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio
ASP.NET 코어 3.0의 새로운 기능은 다음과 같습니다 https://docs.microsoft.com/zh-cn/aspnet/core/release-notes/aspnetcore-3.0?view=aspnetcore-3.0
AutoFac 서비스를 교체
닷넷 코어, 반환 IServiceProvider이 ConfigureServices 서비스에 주입 된 3.0 이전.
불평 닷넷 코어 3.0 프레임 워크 런타임을 사용 후 : System.IServiceProvider를 반환 ConfigureServices은 지원되지 않습니다.
보고 문서는 3.0 ConfigureServices을 발견 한 후 더 이상 반환 IServiceProvider를 지원하지 않습니다.
닷넷 코어 2.2 표현
/// <요약은> /// 주입에 대한 책임 // 서비스 /// </ 요약> /// </ PARAM> <PARAM NAME = "서비스"> /// <리턴 A> </ 반환 A> 공공 IServiceProvider ConfigureServices ( 서비스 IServiceCollection) { // 초기화 컨테이너 VAR 빌더 = 새 새 ContainerBuilder (); // 체류 파이프 builder.Populate (서비스); // 프로그램의 경우 비즈니스 로직 조립 네임 스페이스 조립 = Assembly.Load 서비스 ( " NetCoreDemo.Service " ) ; // 계면 층 위치 조립체 네임 리포지토리 = Assembly.Load 어셈블리 ( " NetCoreDemo.Repository " ); // 자동 주입기 builder.RegisterAssemblyTypes (- 서비스, 리포지토리) 어디에요 (T => t.Name.EndsWith ( " - 서비스 " )) .AsImplementedInterfaces (); // 저장 가입, 모든 IRepository 저장소 인터페이스는지도로 builder.RegisterGeneric ( 대해서 typeof (저장소 <> )) // 각 요청에 대한 새로운 객체를 생성; 기본 모드는, 각각의 호출은 객체 인스턴스화를 다시합니다 InstancePerDependency .as 인을 ( 대해서 typeof 합니다 (IRepository <> )) InstancePerDependency (); // 구성된 ApplicationContainer = builder.Build (); // 도관 AutoFac에 다시 공급되는 리턴 새로운 새 AutofacServiceProvider (ApplicationContainer) }
닷넷 코어 3.0 표현
수정 Program.cs의 기본 ServiceProviderFactory AutofacServiceProviderFactory로 지정
공공 클래스 프로그램 { 공공 정적 무효 메인 ( 문자열 []에 args) { CreateHostBuilder (인수) .Build () 실행 ().; } 공용 정적 IHostBuilder CreateHostBuilder ( 문자열 [] 인수) => Host.CreateDefaultBuilder (인수) // 将默认ServiceProviderFactory指定为AutofacServiceProviderFactory .UseServiceProviderFactory ( 새로운 AutofacServiceProviderFactory ()) .ConfigureWebHostDefaults (webBuilder => { webBuilder.UseStartup<시작> (); webBuilder.UseUrls ( " HTTP : // * : 8004 " ); }); }
이어서 Startup.cs가 첨가 ConfigureContainer의 방법
사용 ConfigureContainer 액세스 Autofac 컨테이너 발전기 및 Autofac에 직접 등록합니다.
공공 무효 ConfigureContainer (ContainerBuilder 빌더) { // 비즈니스 로직 어셈블리 네임 스페이스 프로그램 조립 = Assembly.Load 서비스 ( " NetCoreDemo.Service을 " ); // 여기서 프로그램 인터페이스 층 어셈블리 네임 스페이스 총회 저장소를 Assembly.Load = ( " NetCoreDemo .Repository " ); // 자동 주입기 builder.RegisterAssemblyTypes (- 서비스, 리포지토리) 어디에요 (T => t.Name.EndsWith ( " - 서비스 " )) .AsImplementedInterfaces (); //는 저장 레지스터 저장소 IRepository 모든 인터페이스 지도 제작 builder.RegisterGeneric ( 대해서 typeof (리포지토리 <> )) // InstancePerDependency : 기본 모드는, 각 호출 객체 인스턴스화 다시 것이다 각 요청에 대한 새로운 객체 생성 .as 인 ( 대해서 typeof (IRepository <> ))을 InstancePerDependency. (); }
참조 : https://docs.autofac.org/en/latest/integration/aspnetcore.html#asp-net-core-3-0-and-generic-hosting