csharp开发日常之Activator.CreateInstance构造函数生成实例

目录

一、需求:项目中经常需要动态生成对象,而非采用new关键字方式,例如Java里面的根据类全限定名反射生成对象实例。

二、方案:采用Activator.CreateInstance

三、代码例子演示

        1、代码结构

        2、创建接口

3、创建IObjcet接口的实现类

3、Program.cs


一、需求:项目中经常需要动态生成对象,而非采用new关键字方式,例如Java里面的根据类全限定名反射生成对象实例。

二、方案:采用Activator.CreateInstance

三、代码例子演示

        1、代码结构

        2、创建接口

namespace Test.Console.Core.Interface
{public interface IObjcet{void Put();void Put(string plus);}
}

3、创建IObjcet接口的实现类

using Test.Console.Core.Interface;namespace Test.Console.Core
{public class PlugPut : IObjcet{private string plugName = "";public string PlugName{get { return plugName; }set { plugName = value; }}public PlugPut() { }public PlugPut(string plusName){this.PlugName = plusName;}public void Put(){System.Console.WriteLine("Default plug value is:" + plugName);}public void Put(string plus){System.Console.WriteLine("Put plus value is:" + plus);}}
}

3、Program.cs

System.Type.GetType("Test.Console.Core.PlugPut,Test.Console")中

Test.Console.Core.PlugPut:是实现类的全限定名路径。

Test.Console:是程序集名称。

// See https://aka.ms/new-console-template for more information
using Test.Console.Core.Interface;//用Activator.CreateInstance创建函数实例,默认的不带参数的构造函数
IObjcet ojbi = (IObjcet)Activator.CreateInstance(System.Type.GetType("Test.Console.Core.PlugPut,Test.Console"), null);
ojbi.Put();//用Activator.CreateInstance创建函数实例,并且是带参数的构造函数
IObjcet ojbi2 = (IObjcet)Activator.CreateInstance(System.Type.GetType("Test.Console.Core.PlugPut,Test.Console"), new string[] { "seted new name" });
ojbi2.Put();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPN模型

【简介】 2017年,T.-Y.Lin等人在Faster RCNN的基础上进一步提出了特征金字塔网络FPN(Feature Pyramid Networks)技术。在FPN技术出现之前,大多数检测算法的检测头都位于网络的最顶层(最深层),虽说最深层的特征具备更丰富的语义信息&#xff0…

数仓开发:更新变动数据

数仓 一、数据更新检查二、更新目标表三、更新中间表在数仓建设过程中,经常会遇到上游数据变动,进而更新下游目标表的情况,这个时候只需要根据主键update/insert即可,但也会遇到某些特殊情况,比如说下游update数据库后,还要update缓存中的数据,这时候为了提高效率,必须采取增量…

【ES6】CommonJS模块和ES6模块

在JavaScript中,模块是一种将功能代码组织成逻辑单元的方式,以便在其他项目中重复使用。有两种主要的模块系统:CommonJS和ES6。 1、CommonJS 在CommonJS中,我们使用require来引入模块,使用module.exports来导出模块。…

Python类的方法

Python类的方法主要分为实例方法、类方法和静态方法三种。 1 实例方法 以self作为第一个参数的方法,就是类的实例方法。该方法由类的实例调用,Python会把调用该方法的实例对象传递给self。 如下代码定义了一个名为A的类。 class A:def __init__(self…

空间曲线的参数方程

空间曲线的参数方程 二维直线 经过一点 P ( x 0 , y 0 ) P(x_0,y_0) P(x0​,y0​)的方向向量为 n ( c o s θ , s i n θ ) n(cos\theta,sin\theta) n(cosθ,sinθ)的直线参数方程为: [ x y …

单元测试和集成测试的区别

单元测试和集成测试是软件开发中常用的两种测试方法,它们的主要区别如下: 范围不同:单元测试关注于对软件中的最小功能单元进行测试,通常是对独立的函数、方法或类进行测试。而集成测试则更加综合,涉及多个模块、组件或…

存储空间压缩6倍 ,多点DMALL零售SaaS场景降本实践

🧑‍💼 作者简介 冯光普:多点 DMALL 数据库团队负责人,负责数据库稳定性建设与 DB PaaS 平台建设,在多活数据库架构、数据同步方案等方面拥有丰富经验。 杨家鑫:多点高级 DBA,擅长故障分析与性能…

接口参数校验

方式一:使用hibernate-validator注解方式参数校验 类似的框架太多了。缺点:返回的提示信息顺序不太确定 文档:https://hibernate.org/validator/documentation/ 参考资料:https://blog.csdn.net/weixin_45080272/article/details…

实战 - Restful APi 格式规范

文章目录 1. 特征2. 优点3. 动作1. GET 获取资源2. POST 创建资源3. PUT 整体替换4. PATCH 部分替换5. DELETE 删除资源 4. 示例 RESTful是一种API的设计风格,他和GraphQL ,JSON-RPC,WebService类似,用于定义在CS、BS架构下暴露服…

jenkins如何请求http接口及乱码问题解决

文章目录 1.插件安装2.请求pipline语法3.插件方式实现4.乱码问题解决5.值得注意 1.插件安装 需要安装HTTP Request 插件;安装方式不介绍。 2.请求pipline语法 官网链接,上面有详细语法:https://plugins.jenkins.io/http_request/ 附一个d…

OpenCV(十二):图像透视变换

目录 1.透视变换介绍 2.计算透视变换矩阵getPerspectiveTransform() 3.透视变换函数warpPerspective() 4.demo 1.透视变换介绍 透视变换是一种将原始图像映射到目标图像平面上的投影变换,又称为四点变换。 透视变换矩阵的一般形式如下所示&#xff…

Etherpad安装手册(win10 64位电脑)

Etherpad安装手册 我使用的为win10 64位电脑 一、按照教程下载安装Etherpad 按照该文章下载安装,下面记录我的过程 1.下载etherpad 2.解压缩etherpad到d盘 3.双击start.bat,启动编辑器服务 注意:可能出现问题如下图,跳转二 4.在…

websocket--技术文档--spring后台+vue基本使用

阿丹: 给大家分享一个可以用来进行测试websocket的网页,个人觉得还是挺好用的. WebSocket在线测试工具 还有一个小家伙ApiPost也可以进行使用websocket的测试。 本文章只是基本使用--给大家提供思路简单实现!! 使用spring-boot建立一个服…

【Vue】 Vue3 安装说明,适合小白新手

1、独立版本 我们可以在 Vue.js 的官网上直接下载最新版本, 并用 下载 Vue.js https://unpkg.com/vuenext 2、使用 CDN 方法 以下推荐国外比较稳定的两个 CDN,国内还没发现哪一家比较好,目前还是建议下载到本地。 Staticfile CDN(国内&am…

React Hooks总览

总览 hooks 功能分类具体 hooks具体功能React v18新特性跨端支持数据更新驱动useState定义要在页面中渲染的数据❌✔useReducer定义要在页面中渲染的数据,且这个数据有多种处理逻辑❌✔useSyncExternalStoreconcurrent 模式下,订阅外部 store 的行为&am…

hive anti join 的几种写法

t_a 表的记录如下 c1 | :———— | a | b | c | 生成 SQL 如下: create table t_a(c1 string); insert into t_a values("a"),("b"),("c");t_b 表的记录如下 c1bm 生成 SQL 如下: create table t_b(c1 string); in…

Java低代码开发:jvs-list(列表引擎)功能(一)配置说明

在低代码开发平台中,列表页是一个用于显示数据列表的页面。它通常用于展示数据库中的多条记录,并提供搜索、排序和筛选等功能,以方便用户对数据进行查找和浏览。 jvs-list是jvs快速开发平台的列表页的配置引擎,它和普通的crud 具…

什么是SpringCloud Eureka服务注册与发现

😀前言 本篇博文是关于SpringCloud Eureka 介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力&…

CS420 课程笔记 P4 - 以16进制形态编辑游戏文件

文章目录 IntroductionFinding save filesStringsUnicodeExample!Value searchHealth searchConclusion Introduction 这节课我们将学习编辑十六进制,主要用于编辑保存文件,但十六进制编辑涉及的技能可以很好地转移到: Save file editingRe…

【go-zero】使用自带Redis方法

yaml配置文件 RedisS:Host: Type: Pass: config增加 RedisS struct {Host stringType stringPass string}svc文件 type * struct {RedisClient *redis.Redis } func *(c config.Config) * {sqlConn : sqlx.NewMysql(c.DB.DataSource)return &*{RedisClient: redis.New(c…