需要动态的创建一个实例模型的时候,就用Activator.CreateInstance(Type type);如果是明确的知道要创建哪个实例的模型,就可以用 new

C#在类工厂中动态创建类的实例,所使用的方法为:

  1. Activator.CreateInstance (Type)

  2. Activator.CreateInstance (Type, Object[])

两种方法区别仅为:创建无参数的构造方法和创建有参数的构造函数。

动态创建时,可能会动态使用到外部应用的DLL中类的实例,则此时需要进行反编译操作,使用Reflection命名控件下的Assembly类。

//先使用Assembly类载入DLL,再根据类的全路径获取类

object result = null;
Type typeofControl = null;
Assembly tempAssembly;

tempAssembly = Assembly.LoadFrom(vDllName);
typeofControl = tempAssembly.GetType(vFullClassName);
result = Activator.CreateInstance(typeofControl, objParam);

实例化一个类的方式
用 New 关键字实例化一个类
New 关键字用于创建对象和调用构造函数。是实例化一个类最常见的方式。

用 Activator 实例化一个类
Activator 用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。其 CreateInstance 方法创建在程序集中定义的类型的实例。

用 Assembly 实例化一个类
Assembly 表示一个程序集,它是一个可重用、无版本冲突并且可自我描述的公共语言运行库应用程序构造块。该类可以加载程序集、浏览程序集的元数据和构成部分、发现程序集中包含的类型以及创建这些类型的实例。

加载程序集的推荐方式是使用 Load 方法。GetType 方法可用于在程序集中搜索特定类型。CreateInstance 方法可用于在程序集中搜索和创建类型的实例。

————————————————
版权声明:本文为CSDN博主「只要你在」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/icebergliu1234/article/details/84062674

C# Activator和new的区别相关推荐

  1. Assembly中Load, LoadFrom, LoadFile以及AppDomain, Activator类中相应函数的区别

    Assembly和AppDomain的一些关于动态加载程序集的函数有些令人头疼,但细细研究后还是可以将他们区分的. 这些函数大致可以分为四类: 第一类:加载到Load Context内 Load Co ...

  2. createinstance.java_C# Activator.CreateInstance()方法使用

    本文来自:http://blog.csdn.net/jaydawson/article/details/5539438 C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.Cr ...

  3. Ilist与List的区别

    首先要了解一点的是关于接口的基础知识: 接口不能直接实例化 但是接口派生出来的抽象类可以实例化 所有派生出来的抽象类都可以强制转换成接口的实例 第三条我解释一下:比如,IList <Class& ...

  4. var和dynamic的区别及如何正确使用dynamic?

    1.var与dynamic的区别   C#中的很多关键词用法比较容易混淆,var和dynamic就是其中一组,但其实它们是有本质的区别的.var 在编译阶段已经确定类型,在初始化时候,必须提供初始化的 ...

  5. C# Activator

    需要动态的创建一个实例模型的时候,就用Activator.CreateInstance(Type type);如果是明确的知道要创建哪个实例的模型,就可以用 new C#在类工厂中动态创建类的实例,所 ...

  6. osgi和spring区别_OSGI和Spring动态模块–简单的Hello World

    osgi和spring区别 在此姿势中,我们将采用使用OSGi进行的第一个实现,并使用Spring Dynamic Modules改进应用程序. Spring动态模块(Spring Dm)使基于OSG ...

  7. C#中反射和动态关键字有什么区别?

    目录 介绍 什么是反射以及我们为什么需要它? 我们如何实现反射? 第1步 第2步 反射的实际用途是什么? Dynamic关键字的用途是什么? Dynamic关键字的实际用途是什么? 反射和Dynami ...

  8. Identity, Positive, 和Similarity的区别

    identity和similarity有什么区别,发现自己对这几个概念也不甚了了,于是做了点功课,如下. 第一反应 去查了BLAST的glossary Identity The extent to w ...

  9. 关于Assembly.CreateInstance()与Activator.CreateInstance()方法

    关于Assembly.CreateInstance()与Activator.CreateInstance()方法 动态创建类对象,大多是Activator.CreateInstance()和Activ ...

  10. C#反射:PropertyInfo、FieldInfo和MemberInfo的区别

    第一次接触反射机制,不是很理解PropertyInfo.FieldInfo和MemberInfo的区别 现在做一个实验,和大家分享下实验结果 首先定义测试类 public class ttt {pub ...

最新文章

  1. 数字图像处理笔记一 - 图像采集(空间分辨率和幅度分辨率)
  2. 服务器信息采集协议,服务器信息采集
  3. gitee使用svn_Gitee SVN支持
  4. BZOJ1861:[ZJOI2006]书架(Splay)
  5. Android—将Bitmap图片保存到SD卡目录下或者指定目录
  6. five months plan
  7. Karush-Kuhn-Tucker (KKT条件)
  8. 在 SAP Kyma 上部署一个 Go MSSQL API Endpoint
  9. UVa 11549 Calculator Conundrum
  10. sqli-lab——Writeup(38~over)堆叠等......
  11. C# ref与out区别
  12. linux amd显卡调风扇转速,显卡风扇转速设置教程方法
  13. html思维导图word版,[精选]思维导图(完美排版word).doc
  14. Basler相机全部型号详细参数
  15. 关于使用火车采集器采集分页URL不变化网站
  16. 杭州好玩景点攻略470
  17. C语言 用switch语句算工资
  18. RabbitMQ之消息的自动应答、手动应答和消息持久化(Java开发)
  19. sift特征检测与匹配
  20. Windows非法文件和目录的创建及删除方式

热门文章

  1. Android 多语言对照表
  2. 史上最严重网络数据泄露事件合集
  3. dos命令、find、findstr、ping、nbtstat、netstat、net、at、ftp、telnet、tasklist、taskkill、netsh...
  4. 利用手机距离感应器来切换是用扬声器听音乐还是听筒听音乐
  5. Oracle扩展redo
  6. macOS更换jupyter notebook默认浏览器
  7. ExoPlayer播放器播放MP2音频格式视频无声音加入Ffmpeg软解码功能
  8. 植物大战僵尸:实现灵魂收割者
  9. 蓝叠手机模拟器使用技巧
  10. HMC_Hamiltonian Monte Carlo 推导,代码