一直想得到这样一个函数,输入一个类的名称为参数,返回一个相应的类的实例.

这在工厂模式中是非常有用的

这样,可以使程序有更高的扩展性,例如,,下面的例子

如果现在有一个类,专门用来计算交通工具的速度,不同的交通工具计算方法是不一样的,但是到底有那些交通工具是未知的或者是可变的,这种情况下,我们可能觉得要在添加交通工具的时候,需要修改用来计算速度的那个类,

但如果用Activator .CreateInstance创建实例,通过接口技术,则只要向程序集添加一个交通工具类,而不需要修改任何其它代码..实现了高扩展性.,

示例如下:

//接口:比如,在上例中,可以是交通工具必需实现的接口

using System;

namespace ActivatorCreateInstance
{
/// <summary>
/// IObjcet 的摘要说明。
/// </summary>
public interface IObjcet
{
void printName();
}
}
using System;

namespace ActivatorCreateInstance
{
/// <summary>
/// ClassExam 的摘要说明。
/// </summary>
public class ClassExam:IObjcet
{
private string name="default name";
public ClassExam()
{ } public ClassExam(string name)
{
this.name =name;
} public void printName()
{
Console .WriteLine (this.ToString ()+"'s name is:");
Console .WriteLine (this.name ); }

namespace ActivatorCreateInstance
{
/// <summary>
/// main 的摘要说明。
/// </summary>
public class main
{
public main()
{ } public static void Main()
{//用Activator .CreateInstance创建函数实例,默认的不带参数的构造函数
IObjcet obj=(IObjcet)Activator .CreateInstance(System.Type .GetType ("ActivatorCreateInstance.ClassExam,ActivatorExample" ),null);
//System.Type .GetType 命名空间.类名,程序集
obj.printName(); //调用ClassExam类的另一个带参数构造函数
IObjcet obj2=(IObjcet)System.Activator .CreateInstance (System.Type .GetType ("ActivatorCreateInstance.ClassExam,ActivatorExample" ),new string []{"seted new name"});
obj2.printName ();
}
}
}

用Activator.CreateInstance代替new实现类的实例化的更多相关文章

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

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

  2. C# Activator.CreateInstance 动态创建类的实例(二)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. C# Activator.CreateInstance 动态创建类的实例(一)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

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

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

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

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

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

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

  7. C# Activator.CreateInstance()

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

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

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

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

    本文实例讲述了C#中Activator.CreateInstance()方法用法. Activator 类 包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用. C#在类工厂中 ...

随机推荐

  1. 有效管理进程的几个linux命令

    一般来说,应用程序进程的生命周期有三种主要状态:启动.运行和停止.如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理.这八个命令可用于管理进程的整个生命周期. 启动进程 启动进程的最简单 ...

  2. 初学Linux之标准I/O和管道

    标准输入和输出 程序是由指令+数据组成 程序的数据流有三种: 输入数据流:<–标准输入(stdin),一般默认是键盘 输出数据流:–>标准输出(stdout),一般默认到终端窗口 错误输出 ...

  3. Vue中可用的判断对象是否为空的方法

    vue有两个方法可用 1. JSON.stringify(evtValue)=='{}' 2. Object.keys(xxx).length==0 js判断对象是否为空对象的几种方法 1.将json ...

  4. SQL-W3School-高级:SQL CHECK 约束

    ylbtech-SQL-W3School-高级:SQL CHECK 约束 1.返回顶部 1. SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那 ...

  5. delphi7 treeview + 数据库 实现动态节点维护

    首先说下树节点对应的表的基本结构,必需要有的字段(节点编号,父节点编号,节点名称),其他字段根据你开发的需要添加从添加节点开始,一开始就取出表中最大节点编号,每次添加节点的时候,该节点编号增加1;添加 ...

  6. handlebars基础及循环使用示例

    var source = "<p>Hello, my name is {{name}}. I am from {{hometown}}. I have " + &quo ...

  7. Tomcat 目录结构

    bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令). 很多环境变量的设置都在此处,例如可以设置JDK路径. ...

  8. Linux 基本权限管理

    1.linux权限表示: -rw-r--r-- (一共10位): 第一位:表示文件类型: 常用的三种文件类型:- 表示一般文件,d 表示目录,l 表示软链接文件: 后九位:每三位为一组: rwx r- ...

  9. 324rfwrtg5gft8oywtfbserkufgs

    324rfwrtg5gft8oywtfbserkufgs (tester.inf.nano)

  10. [译]如何使用Python构建指数平滑模型:Simple Exponential Smoothing, Holt, and Holt-Winters

    原文连接:How to Build Exponential Smoothing Models Using Python: Simple Exponential Smoothing, Holt, and ...