需要动态的创建一个实例模型的时候,就用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
原文:https://blog.csdn.net/icebergliu1234/article/details/84062674
版权声明:本文为博主原创文章,转载请附上博文链接!

C# Activator的更多相关文章

  1. C# Activator.CreateInstance()方法使用

    C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...

  2. 解决Activator X for bundle Y is invalid 以及 Activator not found

    如果没有发现编译期异常(就是导航栏项目上有红叉,红感叹号),那么Activator X for bundle Y is invalid和Activator not found这两个异常通常发生在ecl ...

  3. HEU KMS Activator v11.1.0 Windows激活

    HEU KMS Activator基于MDL论坛的“KMS Server Emulator”,是一款KMS激活工具,为“知彼而知己”原创工具.主要适用于Windows以及Office的VL版本,无需联 ...

  4. 注意Activator.CreateInstance两个重载方法的性能

    今天扩展一个Type的扩展方法New: public static object New(this Type type, params object[] args) { Guard.ArgumentN ...

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

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

  6. Activator.CreateInstance 反射实例化对象

    public class CommonReq { private String TransNo { get; set;} public String SubmitData { get; set; } ...

  7. Activator.CreateInstance 方法 (Type) 的用法

    转自:http://www.cnblogs.com/lmfeng/archive/2012/01/30/2331666.html Activator.CreateInstance 方法 (Type) ...

  8. 用Activator.CreateInstance代替new实现类的实例化(转)

    一直想得到这样一个函数,输入一个类的名称为参数,返回一个相应的类的实例. 这在工厂模式中是非常有用的 这样,可以使程序有更高的扩展性,例如,,下面的例子 如果现在有一个类,专门用来计算交通工具的速度, ...

  9. C# Activator.CreateInstance()

    C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...

  10. (转) C# Activator.CreateInstance()方法使用

    C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...

随机推荐

  1. [BZOJ3011][Usaco2012 Dec]Running Away From the Barn

    题意 给出一棵以1为根节点树,求每个节点的子树中到该节点距离<=l的节点的个数 题解 方法1:倍增+差分数组 首先可以很容易的转化问题,考虑每个节点对哪些节点有贡献 即每次对于一个节点,找到其第 ...

  2. 【Android】Bitmap加载图片错误 java.lang.OutOfMemoryError: bitmap size exceeds VM budget

    今天测试程序的时候出现下面的错误日志信息,程序当场挂掉 07-09 14:11:25.434: W/System.err(4890): java.lang.OutOfMemoryError: bitm ...

  3. mysql时间延时注入案例

    通过Burpsuite结合sqlmap发现如下接口存在时间盲注

  4. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-1目录

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  5. jenkins(8): 实战jenkins+gitlab持续集成发布php项目(代码不需要编译)

    一. jenkins 的配置 1.前提条件安装了GitLab Plugin (源码管理使用),GitLab Hook(gitlab webhook需要) Manage Jenkins--->Ma ...

  6. >maven-compiler-plugin的理解

    在maven中项目中这个插件一直都会看见,但是一直没有认真学习一下为啥使用,现在有空就查询学习一下. 1.使用场景 下载了一些工程需要编译的时候. maven是个项目管理工具,如果我们不告诉它我们的代 ...

  7. miniui格式化日期的方法

    <div field="InsertTime" renderer="ondayRenderer" headerAlign="center&quo ...

  8. 【JavaScript】浏览器

    No1: [window]全局作用域,而且表示浏览器窗口 innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度.内部宽高是指除去菜单栏.工具栏.边框等占位元素后,用于显 ...

  9. PostgreSQL 创建触发器 Trigger

    触发器的知识点: PostgreSQL在以下情况下执行/调用触发器:在尝试操作之前(在检查约束并尝试INSERT,UPDATE或DELETE之前).或者在操作完成后(在检查约束并且INSERT,UPD ...

  10. CDN拾遗

    作为前端er,辛辛苦苦搬完砖,好不容易上线之后,正准备告一声万事大吉,回家吃鸡.忽然qa/pm/老板问,为什么我这里还是没有更新?只能是弱弱的回一声,清个缓存看看?或者还有那么一天,发现大部分区域都是 ...