C#中Activator.CreateInstance()方法用法分析

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技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • Unity3D摄像机跟随小球移动而不旋转的设置方法

    让我们来讲解一下“Unity3D摄像机跟随小球移动而不旋转的设置方法”,以下是具体的步骤: 步骤一:创建一个场景 首先,在Unity编辑器中创建一个新场景,然后创建一个小球和一个摄像机。将小球放在场景中央,并将摄像机放在适当的位置来拍摄小球。 步骤二:设置摄像机位置和旋转 接下来,我们需要将摄像机的位置和旋转设置为固定的。具体步骤如下: 找到摄像机组件Ins…

    C# 2023年6月3日
    00
  • c#中将uint值转换成int的实例方法

    将uint值转换成int的方法有多种,其中一种常用的方法是将uint值强制转换成int类型。这种方法可以利用unchecked代码块确保不会引发数值溢出。 下面是实现这种方法的代码示例: uint uintValue = 1234567890; int intValue = unchecked((int)uintValue); 在上面的代码示例中,我们首先将…

    C# 2023年5月15日
    00
  • RandomId生成随机字符串详解实例

    RandomId生成随机字符串详解实例 介绍 在软件开发中,为了满足不同的需求,我们经常需要生成随机字符串进行使用。本篇文章将介绍RandomId生成随机字符串的详细过程,以及具体的示例说明。 准备工作 在使用RandomId生成随机字符串之前,需要在项目中引入RandomId的相关代码。可以使用以下语句进行安装: npm install randomid …

    C# 2023年6月7日
    00
  • C# CUR类实现代码

    下面是C# CUR类实现代码的完整攻略,包含以下几个步骤: 一、什么是CUR类? CUR类是一个用来进行和处理HTTP请求的.NET类库,它可以实现URL的编码和解码,支持HTTP请求和响应,可以发送HTTP请求并获取响应。CUR类广泛应用于各种.NET开发中,比如Web应用程序、桌面应用程序等。 二、CUR类的基本用法 1. 创建CUR对象 要使用CUR类…

    C# 2023年5月31日
    00
  • C#将配置文件appsetting中的值转换为动态对象调用

    将配置文件appsettings中的值转换为动态对象调用,可以使用C#中的Configuration API和ExpandoObject类。 以下是具体实现步骤: 1、添加配置文件 在项目的根目录下,添加一个名为appsettings.json的文件,用于存储应用程序的配置信息: { "AppSettings": { "MyKe…

    C# 2023年5月31日
    00
  • jQuery $.get 的妙用 访问本地文本文件

    下面是关于“jQuery $.get的妙用访问本地文本文件”的完整攻略,包含两个示例。 1. jQuery $.get访问本地文本文件简介 在Web开发中,我们经常需要访问本地文本文件。使用jQuery的$.get方法可以轻松地访问本地文本文件。$.get方法是jQuery中的一个AJAX方法,可以用于从服务器加载数据。在本地文件中,我们可以使用$.get方…

    C# 2023年5月15日
    00
  • Asp.Mvc 2.0实现用户注册实例讲解(1)

    Asp.Mvc 2.0实现用户注册实例讲解(1)的完整攻略如下: 1. Asp.Mvc 2.0介绍 Asp.Mvc 2.0是基于MVC架构的Web应用程序框架,是ASP.NET的一部分,可帮助我们更加轻松地构建Web应用程序。 MVC是Model-View-Controller的缩写,是一种设计模式。M代表数据模型(Model),V代表显示(View),C代…

    C# 2023年5月31日
    00
  • C# Clear():从集合中移除所有元素

    C#中的Clear()方法是一个实例方法,通常用于清空某些数据结构中的元素,例如字符串、数组、集合等。以下是C# Clear()的完整攻略,包括用法、示例和注意事项。 用法 Clear()方法是通过.运算符调用的实例方法,该方法不接受参数,返回值为void类型。可以使用Clear()方法来清空String、StringBuilder、List、Diction…

    C# 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部