어떤 경우에는 런타임에 결정된 유형을 기반으로 제네릭 유형의 인스턴스를 동적으로 생성해야 할 수도 있습니다. 일반 유형은 일반적으로 컴파일 타임에 정의되기 때문에 이는 어려울 수 있습니다.
이를 달성하는 한 가지 방법은 리플렉션을 활용하는 것입니다. 다음은 대상 유형이 포함된 변수를 사용하여 일반 유형 인스턴스를 생성할 수 있는 해결 방법입니다.
<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
객체를 반환합니다. 이 경우 double
의 Type
을 전달하여 대상 유형을 지정합니다.
특정 제네릭 유형을 얻은 후 Activator.CreateInstance
메서드를 사용하여 이 유형의 개체를 인스턴스화할 수 있습니다. 이 메서드는 리플렉션을 사용하여 지정된 개체 유형의 새 인스턴스를 동적으로 만듭니다.
이 접근 방식을 사용하면 런타임에 결정된 유형을 기반으로 일반 유형의 인스턴스를 동적으로 생성할 수 있으므로 유연성과 코드 적응성이 향상됩니다. 제네릭 유형 typeof(List)
을 올바르게 나타내려면 typeof(List<>)
을 List<T>
으로 변경해야 합니다.
위 내용은 런타임에 일반 유형 인스턴스를 동적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!