>백엔드 개발 >C++ >런타임에 일반 유형 인스턴스를 동적으로 생성하려면 어떻게 해야 합니까?

런타임에 일반 유형 인스턴스를 동적으로 생성하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-13 07:17:42217검색

How Can I Dynamically Create a Generic Type Instance at Runtime?

런타임에 일반 유형의 인스턴스를 동적으로 생성

어떤 경우에는 런타임에 결정된 유형을 기반으로 제네릭 유형의 인스턴스를 동적으로 생성해야 할 수도 있습니다. 일반 유형은 일반적으로 컴파일 타임에 정의되기 때문에 이는 어려울 수 있습니다.

이를 달성하는 한 가지 방법은 리플렉션을 활용하는 것입니다. 다음은 대상 유형이 포함된 변수를 사용하여 일반 유형 인스턴스를 생성할 수 있는 해결 방법입니다.

<code class="language-csharp">Type k = typeof(double);
Type genericListType = typeof(List<>); // 注意这里<>
var specificListType = genericListType.MakeGenericType(k);
var list = Activator.CreateInstance(specificListType);</code>

MakeGenericType 메소드는 단일 Type 매개변수를 허용하고 지정된 유형 매개변수를 사용하여 일반 유형을 나타내는 새 Type 객체를 반환합니다. 이 경우 doubleType을 전달하여 대상 유형을 지정합니다.

특정 제네릭 유형을 얻은 후 Activator.CreateInstance 메서드를 사용하여 이 유형의 개체를 인스턴스화할 수 있습니다. 이 메서드는 리플렉션을 사용하여 지정된 개체 유형의 새 인스턴스를 동적으로 만듭니다.

이 접근 방식을 사용하면 런타임에 결정된 유형을 기반으로 일반 유형의 인스턴스를 동적으로 생성할 수 있으므로 유연성과 코드 적응성이 향상됩니다. 제네릭 유형 typeof(List)을 올바르게 나타내려면 typeof(List<>)List<T>으로 변경해야 합니다.

위 내용은 런타임에 일반 유형 인스턴스를 동적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.