📅  最后修改于: 2023-12-03 15:11:40.617000             🧑  作者: Mango
在C#中,可以通过给定类名字符串来创建类的实例。这种方法被称为反射。
反射是一种强大的技术,可以使我们在编译时以外的时间访问和操作程序的元数据。C#的反射库提供了一系列类型和方法,可以在程序执行时对类型进行查询和操作。
在C#中,要使用反射,需要引入命名空间System.Reflection
。
下面是示例代码,演示如何在C#中使用反射来创建类的实例。
假设我们要创建一个名为"Person"的类的实例。这个类有两个属性:Name
和Age
。
首先,我们需要使用反射查询并获取这个类型:
Type personType = Type.GetType("Person");
其中,参数为Person
,表示要查找名为"Person"的类型。如果这个类型在当前程序集中,Type.GetType
方法会返回这个类型的Type
对象;否则,它会返回null
。
接下来,我们可以使用Activator.CreateInstance
方法来创建这个类型的实例:
object personInstance = Activator.CreateInstance(personType);
Activator.CreateInstance
方法会返回一个object
类型的实例。由于我们知道personType
是Person
类型,因此可以将返回值转换为Person
类型:
Person person = (Person)personInstance;
现在,我们就可以设置person
的属性:
person.Name = "John";
person.Age = 30;
完整的代码如下:
using System;
using System.Reflection;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
static void Main(string[] args)
{
Type personType = Type.GetType("Person");
object personInstance = Activator.CreateInstance(personType);
Person person = (Person)personInstance;
person.Name = "John";
person.Age = 30;
Console.WriteLine("Name: " + person.Name);
Console.WriteLine("Age: " + person.Age);
}
}
输出:
Name: John
Age: 30
本文介绍了如何使用反射创建类的实例。需要注意的是,使用反射创建实例比直接使用new
关键字创建实例的效率要低。因此,应该尽量减少使用反射,只在必要的时候使用。