> 백엔드 개발 > C++ > C#에서 일반 생성자 인스턴스에 매개 변수를 삽입하려면 어떻게 해야 합니까?

C#에서 일반 생성자 인스턴스에 매개 변수를 삽입하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-09 12:22:44
원래의
863명이 탐색했습니다.

How Can I Inject Parameters into Generic Constructor Instances in C#?

일반 생성자 인스턴스에 매개변수 삽입

특정 유형의 인스턴스를 생성해야 하는 일반 메서드의 맥락에서 다음과 같은 질문이 발생합니다. : 해당 유형의 생성자에 매개변수가 필요한 상황을 어떻게 처리할 수 있나요? BaseFruit이 정수 가중치를 받는 생성자를 갖고 있는 경우를 생각해 보세요. 다음과 같은 방식으로 일반 메소드 내에서 과일을 인스턴스화할 수 있습니까?

public void AddFruit<T>() where T: BaseFruit {
    BaseFruit fruit = new T(weight); // new Apple(150)
    fruit.Enlist(fruitManager);
}
로그인 후 복사

제공된 예에서 가중치가 150인 Apple 인스턴스를 인스턴스화하려는 시도를 볼 수 있습니다. 그러나 이 접근 방식은 그렇지 않습니다. BaseFruit에 매개변수 없는 생성자가 장착되어 멤버 변수의 후속 할당이 허용되지 않는 한 가능합니다. 불행하게도 실제 시나리오에서는 이 접근 방식이 불편할 수 있습니다.

이 문제를 해결하기 위해 다음의 간단한 예에서 볼 수 있듯이 Activator 클래스를 활용할 수 있습니다.

return (T)Activator.CreateInstance(typeof(T), new object[] { weight });
로그인 후 복사

T에 대한 new() 제약 조건은 컴파일러가 컴파일 중에 매개 변수가 없는 공용 생성자의 존재를 확인하도록 하기 위한 것입니다. Activator 클래스는 유형 생성 프로세스를 궁극적으로 담당합니다.

사용하려는 특정 생성자가 있는지 확인하는 것이 중요합니다. 또한 현재 C# 구현에서 피할 수 있는 코드 디자인 문제를 나타낼 수 있으므로 이러한 요구 사항이 필요한지 여부를 고려해 볼 가치가 있습니다.

위 내용은 C#에서 일반 생성자 인스턴스에 매개 변수를 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿