이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 57373|회답: 4

[출처] ASP.NET 코어(VI) DI는 객체 주입 방식을 수동으로 획득합니다

[링크 복사]
2021-3-19 15:13:15에 게시됨 | | |
ASP.NET 코어 의존성 주입, 제어 반전(DI IOC) 튜토리얼:

ASP.NET 코어 의존성 주입은 포함된 IOC 컨테이너를 사용합니다
https://www.itsvse.com/thread-7562-1-1.html


복습:

ASP.NET 코어(다섯 개)는 CAP 분산 트랜잭션을 기반으로 합니다
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET 코어(4) 필터 통합 모델스테이트 모델 검증
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET 코어 (iii) ActivatorUtilities를 사용하여 동적으로 인스턴스를 생성합니다
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET 코어 (2) 코드로 애플리케이션을 재시작함
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET 코어(1)는 Redis 캐싱을 사용합니다
https://www.itsvse.com/thread-9393-1-1.html
의존성 주입 요약:

의존성 주입(DI)은 객체와 그 협력자 또는 의존성 간의 느슨한 결합을 구현하는 기법입니다. 이 객체들을 클래스가 직접 협업자를 인스턴스화하거나 정적 참조를 사용하는 대신, 어떤 식으로든 클래스에 연산을 수행하는 데 사용하는 것을 제공하세요.

ASP.NET Core DI는 일반적으로 ConfigureServices 주입을 구성한 후 객체를 생성하는 방식으로 생성자를 얻을 수 있습니다:


수동으로 주입 오브젝트를 가져오면 어떨까요?

첫 번째 방법은(가끔은 이해가 안 되기도 해,추천하지 않습니다):


두 번째 획득 방법권장 사용 방법):

참고: ServiceLocator.Instance.GetService<T>(; ,AddTransient와 AddSingleton이 주입한 객체만 가져올 수 있습니다, 그리고 AddScoped의 주입된 객체(요청 수명주기에서 유일함)를 얻을 수 없는데, 이는 획득 객체가 생성자가 획득하지 않아서가 아니라, 획득한 객체가 공유되지 않기 때문이며, 사용 시나리오가 IUnitOfWork와 같기 때문입니다.

그렇다면 요청 수명 주기 동안 주입 객체를 수동으로 어떻게 가져오나요? 방법은 다음과 같습니다:


또는

IHttpContextAccessor 인터페이스는 Microsoft.AspNetCore.Http.AbstractionsNuget 패키지 아래에 있습니다.




이전의:HttpClient POST 직접 사용하여 바이트 바이트(gzip) 압축 요청을 전송합니다
다음:Roslyn MSBuild 컴파일러의 차이점
2021-9-22 20:43:14에 게시됨 |
배우기 시작해...
2021-9-22 20:55:17에 게시됨 |
배우기 시작해...
2022-6-17 16:05:39에 게시됨 |
사용법을 배우세요
 집주인| 2024-12-30 17:09:09에 게시됨 |
콘솔은 IHttpContextAccessor 인터페이스를 주입합니다:



.NET/C# 콘솔 서비스는 Consul 서비스 발견에 등록됩니다
https://www.itsvse.com/thread-10899-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com