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

보기: 36608|회답: 1

[.NET 코어] ASP.NET 코어 (iii) ActivatorUtilities를 사용하여 동적으로 인스턴스를 생성합니다

[링크 복사]
게시됨 2020. 12. 1. 오후 1:50:31 | | | |
복습:

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

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

일반적으로 인스턴스화된 객체는 새로운 키워드를 가진 클래스의 인스턴스화입니다

C#은 다음 메서드를 사용하여 클래스 팩토리에서 클래스 인스턴스를 동적으로 생성합니다:


Activator.CreateInstance (Type)
Activator.CreateInstance (Type, Object[])


먼저, ITest 인터페이스를 다음과 같이 정의합니다:

두 개의 구현 클래스, 즉 TestA와 TestB를 정의하며, 코드는 다음과 같습니다:

여기서 TestB는 비어 있지 않은 구성자를 가집니다

TestB 클래스의 GetUserName 메서드는 IConfiguration을 통해 설정 파일을 읽고, 들어오는 매개변수와 스티치하여 반환값을 반환해야 합니다.

구성 파일은 다음과 같습니다:



우리는 DLL을 동적으로 로드하고, 반사로 생성하며, 각각 Activator와 ActivatorUtilities를 통해 인스턴스화하여 객체를 생성하며, 다음과 같은 코드로 구성됩니다:

결과 반환:

퇴역
"안녕하세요, itsvse.com"
예: 메시지
"'ClassLibrary1.TestB' 타입에 대해 매개변수 없는 생성자가 정의되어 있지 않습니다."

퇴역
"안녕하세요, itsvse.com"
퇴역
"아아아 itsvse.com"

Activator를 사용해 TestB 객체를 생성할 때, 다음과 같은 오류가 보고됩니다:'ClassLibrary1.TestB' 타입에 대해 매개변수 없는 생성자가 정의되어 있지 않습니다..

ActivatorUtilities를 통해 TestA와 TestB를 생성하면 오류가 보고되지 않으며, 아래와 같이 정상적으로 실행될 수 있습니다:




.NET 프레임워크에서 Activator를 사용해 객체를 인스턴스화하는 데는 문제가 없지만, asp.net 코어에서는 IOC와 DI 개념이 도입되며, 많은 객체가 매개변수 없는 생성자가 아니어 해당 구현 클래스에 전달되어야 합니다.

여기서 _services 정적 변수는 다음과 같이 정의됩니다:

CreateInstance(IServiceProvider, Type, Object[])
매개 변수

제공자
IServiceProvider(서비스제공자)
의존성 해결을 위한 서비스 제공자

인스턴스타입
유형
활성화할 유형

매개변수
객체[]
제공자가 제공하지 않은 구성자 매개변수


참조:하이퍼링크 로그인이 보입니다.

(끝)




이전의:모바일 및 데스크톱 OAuth 2.0 보안 분석 및 CodeVerifier 메커니즘
다음:JSC를 사용해 C# 호출용 자바스크립트 DLL을 생성하세요
게시됨 2021. 9. 22. 오후 8:31:33 |
배우기 시작해...
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com