리플렉션을 사용하여 C# 일반 개체를 동적으로 생성
C# 개발에서는 일반 클래스의 인스턴스를 동적으로 생성해야 하는 경우가 많습니다. 이는 반성을 통해 달성될 수 있습니다. 일반적인 애플리케이션 시나리오는 일반 클래스의 유형이 런타임 이전에 알려지지 않고 정규화된 이름을 나타내는 문자열을 기반으로 생성되어야 한다는 것입니다.
리플렉션을 사용하여 일반 클래스를 동적으로 생성하려면 Activator.CreateInstance
메서드를 사용해야 합니다.
<code class="language-csharp">using System; using System.Reflection; public class MainClass { public static void Main(string[] args) { // 获取泛型类型定义 Type genericType = typeof(Task<>); // 构建泛型类型的类型参数 Type[] typeArgs = { typeof(Item) }; // 创建具体的泛型类型 Type specificType = genericType.MakeGenericType(typeArgs); // 创建具体类型的实例 object instance = Activator.CreateInstance(specificType); } } public class Item { } public class Task<T> { } public class TaskA<T> : Task<T> { } public class TaskB<T> : Task<T> { }</code>
위의 예제 코드는 Task<Item>
의 인스턴스를 동적으로 빌드합니다. 런타임 시 대상 유형을 알 수 없는 경우 유형의 정규화된 이름(문자열)을 전달하여 동적으로 빌드할 수 있습니다.
<code class="language-csharp">// 使用字符串表示获取类型 Type specificType = Type.GetType("namespace.TaskA`1"); // 注意 `1` 表示泛型参数个数 // 传递类型参数并创建实例 Type[] typeArgs = { typeof(Item) }; object instance = Activator.CreateInstance(specificType.MakeGenericType(typeArgs));</code>
이 방법을 사용하면 개발자는 컴파일 타임에 특정 유형을 알지 못해도 일반 클래스의 인스턴스를 동적으로 생성할 수 있습니다. 이는 구성 파일이나 데이터 기반 프로그래밍에서 유형을 유추하는 등의 시나리오에서 특히 유용합니다.
위 내용은 리플렉션을 사용하여 일반 C# 개체를 동적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!