> 백엔드 개발 > C++ > 리플렉션을 사용하여 C#에서 일반 개체를 동적으로 생성하려면 어떻게 해야 합니까?

리플렉션을 사용하여 C#에서 일반 개체를 동적으로 생성하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-22 09:32:09
원래의
740명이 탐색했습니다.

How Can I Dynamically Create Generic Objects in C# Using Reflection?

리플렉션을 사용하여 C#에서 일반 객체를 동적으로 생성

C#에서는 유형 문자열을 기반으로 객체를 동적으로 생성해야 하는 상황에 자주 직면합니다. 이 접근 방식은 리플렉션을 사용하여 명시적인 유형 선언을 방지합니다.

다음 클래스 구조를 고려하세요.

<code class="language-csharp">public class Item
{ }

public class Task<T>
{ }

public class TaskA<T> : Task<T>
{ }

public class TaskB<T> : Task<T>
{ }</code>
로그인 후 복사

우리의 목표는 리플렉션을 사용하여 TaskA 또는 TaskB의 인스턴스를 동적으로 생성하는 것입니다. 유형을 미리 알 수 없으므로 "namespace.TaskA" 또는 "namespace.TaskAB"와 같은 유형 문자열을 사용합니다.

리플렉션을 사용하면 다음과 같이 달성할 수 있습니다.

<code class="language-csharp">var type = Type.GetType("namespace.TaskA`1"); // 将“namespace”替换为您实际的命名空间
Type[] typeArgs = { typeof(Item) };
var makeme = type.MakeGenericType(typeArgs);
object instance = Activator.CreateInstance(makeme);</code>
로그인 후 복사

이 메소드는 지정된 유형 문자열을 기반으로 TaskA의 인스턴스를 동적으로 생성합니다. 일반 클래스가 여러 유형을 허용하는 경우 다음 예와 같이 유형 이름을 생략할 때 쉼표를 포함해야 합니다.

<code class="language-csharp">Type type = typeof(IReadOnlyDictionary);</code>
로그인 후 복사

위 내용은 리플렉션을 사용하여 C#에서 일반 개체를 동적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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