C#中Activator.CreateInstance()方法用法分析
前言
C#中 Activator.CreateInstance()
方法是一种动态创建实例的方法。在实际项目中,我们常常需要动态加载程序集并创建其中的类型对象。这时,Activator.CreateInstance()
方法就可以起到很好的作用。
方法说明
Activator.CreateInstance()
方法主要包含两个重载:
public static object CreateInstance(Type type)
public static object CreateInstance(Type type, params object[] args)
第一个重载用于创建指定类型的实例,第二个重载则可以传入参数列表,进行指定类型的实例化。
用法示例
使用CreateInstance方法创建某类型的实例
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void SayHi()
{
Console.WriteLine($"Hi, my name is {Name}, and I am {Age} years old.");
}
}
class Program
{
static void Main(string[] args)
{
Type personType = Type.GetType("Person"); //获取Person类型的Type对象
object personObj = Activator.CreateInstance(personType); //创建Person类型的实例对象
Person person = (Person)personObj; //类型转换,将object类型转换为具体类型Person
person.Name = "Tom";
person.Age = 20;
person.SayHi(); //输出: Hi, my name is Tom, and I am 20 years old.
}
}
在上面的示例中,我们使用Type.GetType()
获取 Person 类型的 Type
对象,并使用 Activator.CreateInstance()
的第一个重载动态创建了一个该类型的实例。动态创建的对象我们得到了一个 object
类型的对象,需要进行类型转换才能访问对象成员,这里通过将 object
转换为 Person
类型来完成对成员的访问。
使用CreateInstance方法创建含构造器的实例
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age) //含参构造方法
{
Name = name;
Age = age;
}
public void SayHi()
{
Console.WriteLine($"Hi, my name is {Name}, and I am {Age} years old.");
}
}
class Program
{
static void Main(string[] args)
{
Type personType = Type.GetType("Person"); //获取Person类型的Type对象
object personObj = Activator.CreateInstance(personType, new object[] { "Tom", 20 }); //创建含构造器的Person类型的实例对象
Person person = (Person)personObj; //类型转换,将object类型转换为具体类型Person
person.SayHi(); //输出: Hi, my name is Tom, and I am 20 years old.
}
}
在上面的示例中,我们使用了含参的构造函数创建了该类型的实例,通过使用 Activator.CreateInstance()
的第二个重载并传入构造函数参数,实现了在创建对象时确定特定的属性值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Activator.CreateInstance()方法用法分析 - Python技术站