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日

相关文章

  • 一步步教你如何创建第一个C#项目

    一步步教你如何创建第一个C#项目 在本篇攻略中,我们将一步步地创建一个C#控制台程序。这个项目的功能是输出一个简单的问候语句。接下来我们将逐一介绍。 步骤一:打开Visual Studio 首先,你需要打开Visual Studio。可以在Windows操作系统中通过点击Windows菜单键,输入“Visual Studio”进行搜索并进入该程序;或者通过桌…

    C# 2023年6月6日
    00
  • Docker大型项目容器化改造

    Docker大型项目容器化改造 Docker 是一种流行的容器化技术,可以将应用程序和其依赖项打包到一个容器中,以便在不同的环境中运行。本攻略将介绍如何将大型项目容器化改造,包括 Dockerfile 的编写、镜像的构建和容器的部署等步骤。 编写 Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本文件,其中包含了构建镜像所需的所…

    C# 2023年5月17日
    00
  • .NET Framework 4.5新特性介绍

    下面是关于“.NET Framework 4.5新特性介绍”的完整攻略,包含两个示例。 1. 什么是.NET Framework 4.5 .NET Framework 4.5是微软公司发布的一个开发框架,用于创建Windows应用程序、Web应用程序和服务。它包含了许多新的特性和改进,可以提高开发效率和应用程序性能。 2. .NET Framework 4.…

    C# 2023年5月15日
    00
  • 如何在 .NET Core WebApi 中处理 MultipartFormDataContent 中的文件

    在上一篇文章(如何在 .NET Core WebApi 中处理 MultipartFormDataContent)中,我们有描述过如何以最简单的方式在 .NET Core WebApi 中处理 MultipartFormDataContent 。基于框架层面的封装,我们可以快速的从 Request.Form 中分别拿到文件内容和文本内容,但是这些默认的解析方…

    C# 2023年4月22日
    00
  • asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)

    动态修改webservice的地址和端口可以通过修改web.config配置文件中的节点来实现,以下是详细攻略: 读取web.config配置文件 首先,我们需要读取web.config配置文件中的节点,可以使用ConfigurationManager类来实现。代码示例如下: Configuration conf = ConfigurationManager…

    C# 2023年6月3日
    00
  • C#中DateTime日期类型格式化显示方法汇总

    C#中DateTime日期类型格式化显示方法汇总 在C#中,DateTime是表示日期和时间的结构体。我们经常需要输出符合我们要求的日期和时间的格式来方便输出和理解。下面是一些DateTime的格式化输出方法: 标准格式字符串 格式字符串 描述 d 短日期格式,例如 2022/3/17 D 长日期格式,例如 2022年3月17日 t 短时间格式,例如 下午 …

    C# 2023年5月31日
    00
  • C# 计算DataTime的4种时间差的方法(相差天数、相差小时、相差分钟、相差秒)

    下面我来详细讲解“C# 计算DataTime的4种时间差的方法(相差天数、相差小时、相差分钟、相差秒)”的完整攻略。 1. 计算相差天数 可以使用DateTime的Subtract方法计算出两个时间之间相差的TimeSpan,然后获取TimeSpan中的Days属性即可。 DateTime startTime = DateTime.Now; DateTime…

    C# 2023年5月31日
    00
  • 深入c# GDI+简单绘图的具体操作步骤(一)

    以下是针对“深入c# GDI+简单绘图的具体操作步骤(一)”的完整攻略。 操作步骤 步骤一:创建画布 首先,我们需要创建一个画布。在C#中,可以通过使用System.Drawing命名空间中的Graphics类来创建画布。 //创建画布 Graphics g = e.Graphics; 步骤二:设置画笔 接下来,我们需要设置画笔。在C#中,可以通过使用Sys…

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