복습:
일반적으로 인스턴스화된 객체는 새로운 키워드를 가진 클래스의 인스턴스화입니다
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(서비스제공자) 의존성 해결을 위한 서비스 제공자
인스턴스타입 유형 활성화할 유형
매개변수 객체[]
제공자가 제공하지 않은 구성자 매개변수。
참조:하이퍼링크 로그인이 보입니다.
(끝)
|