一、MSDN 描述

Type 类:表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义、以及开放或封闭构造的泛型类型。

命名空间: System

程序集:mscorlib.dll

继承关系:

从上面的继承关系能看出,Type和反射有关系,的确,引用MSDN上的话Type 为 System.Relection 功能的根也是访问元数组的主要方式。

二、获取 Type 的几种方式:

1. typeof 运算符

 var type1 = typeof(TypeName);

var intType = typeof(int);

2. Type.GetType(string TypeName) 方法

注意 TypeName 必须是 AssemblyQualifiedName ,即类型的程序限定名由程序的名称(包括了类型的命名空间)加上一个逗号再加上程序集的显示名称组成。

 var typeName = @"ImplA.ClassFunc,ImplA";
var typeImplA = Type.GetType(typeName);

3. ObjectInstance.GetType();

 Console.WriteLine(.GetType());

上面3种方法,最常用的是第二种,其次是第一种,然后是第三种

三、简单的类加载器

UML类图如下:

上面的 4个类(接口)分别在单独的程序集中

IFuction 位于 Common.dll

 namespace Common
{
public interface IFuction
{
void Init(string initConfig); void Open(); void Close(); void Dispose();
}
}

Loader 位于 App.exe

 using System;
class App
{
static void Main()
{
LoadPlugin();
} static void LoadPlugin()
{
// 读取xml配置,目前为了代码简单化写死
var strA = @"ImplA.ClassFunc,ImplA";
var strB = @"ImplB.ClassFunc,ImplB"; var instanceA = Activator.CreateInstance(Type.GetType(strA)) as IFuction;
var instanceB = Activator.CreateInstance(Type.GetType(strB)) as IFuction; instanceA.Init(null);
instanceA.Open(); instanceB.Init(null);
instanceB.Open();
}
}

ClassFunc 位于 ImplA.dll

 using System;
using Common; namespace ImplA
{
public class ClassFunc : IFuction
{ public void Init(string initConfig)
{
Console.WriteLine("ImplA.ClassFunc.Init");
} public void Open()
{
Console.WriteLine("ImplA.ClassFunc.Open");
} public void Close()
{
Console.WriteLine("ImplA.ClassFunc.Close");
} public void Dispose()
{
Console.WriteLine("ImplA.ClassFunc.Dispose");
}
}
}

ClassFunc 位于 ImplB.dll

 using System;
using Common; namespace ImplB
{
public class ClassFunc : IFuction
{ public void Init(string initConfig)
{
Console.WriteLine("ImplB.ClassFunc.Init");
} public void Open()
{
Console.WriteLine("ImplB.ClassFunc.Open");
} public void Close()
{
Console.WriteLine("ImplB.ClassFunc.Close");
} public void Dispose()
{
Console.WriteLine("ImplB.ClassFunc.Dispose");
}
}
}

类库探源——System.Type的更多相关文章

  1. 类库探源——System.Configuration 配置信息处理

    按照MSDN描述 System.Configuration 命名空间 包含处理配置信息的类型 本篇文章主要两方面的内容 1. 如何使用ConfigurationManager 读取AppSetting ...

  2. 类库探源——System.ValueType

    一.MSDN描述 ValueType 类:提供值类型的基类 命名空间: System 程序集:   mscorlib.dll 继承关系: 值类型包括:字符.整数.浮点.布尔.枚举.结构(其实字符.整数 ...

  3. 类库探源——System.Delegate

    一.MSDN 描述 Delegate 类:表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法.(是不是感觉很像C语言中的函数指针 :) ) 命名空间: System 程序集:   ...

  4. 类库探源——System.Exception

    一.MSDN描述 Exception 类: 表示在应用程序执行期间发生的错误 命名空间 : System 程序集:   mscorlib.dll 继承关系: 常用属性(含字段)和方法: 1. 属性Me ...

  5. 类库探源——System.Drawing.Bitmap

    一.System.Drawing.Bitmap Bitmap 类: 封装GDI+ 位图,此位图由图形图像及其属性的像素数据组成.Bitmap 是用于处理由像素定义的图像的对象 命名空间: System ...

  6. 类库探源——System.Drawing

    一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...

  7. 类库探源——System.Math 和 Random

    一.System.Math Math类:为三角函数.对数函数和其他通用数学函数提供常数和静态方法 命名空间: System 程序集 :   mscorlib.dll 继承关系: 常用属性: Math. ...

  8. 类库探源——System.Environment

    Environment 类: 提供有关当前环境和平台的信息以及操作它们的方法.此类不能被继承. 命名空间: System 程序集:   mscorlib.dll 继承关系: 常用属性(字段)和方法: ...

  9. 类库探源——System.String

    一.MSDN描述 String 类: 表示文本,即一系列的 Unicode 字符 命名空间 : System 程序集 : mscorlib.dll 继承关系: 备注: 1. 字符串是 Unicode ...

随机推荐

  1. VMware设置虚拟机,并配置远程连接桌面

    现在需要使用VMware虚拟出几个window7的机器,用来跑自动化测试. 在配置虚拟机的时候遇到了几个问题: 问题1:虚拟机无法与外界机器通信.(可ping通过). 问题2:外界机器无法链接虚拟机的 ...

  2. datax中oracleWriter

    在使用datax的oraclewriter时,由于对oracle的不熟悉,以及c++编译的不熟悉,颇费了一些周折.在此,记录一下,供再次使用的人参考. 1.oracleWriter :oracle提供 ...

  3. Web前端常见问题处理

    1. 浏览器后退按钮 这个在注册或者登陆的时候是一个普遍的问题,登陆之后,跳转到另外一个页面,我的鼠标有两个侧键,是用于前进和后退的,有时候会误点侧键,这个时候页面又会回到之前的登录页面,但事实是用户 ...

  4. Bzoj 2252: [2010Beijing wc]矩阵距离 广搜

    2252: [2010Beijing wc]矩阵距离 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 563  Solved: 274[Submit][ ...

  5. java解惑

    java对转义字符没有提供任何特殊处理.编译器在将程序解析成各种符号之前,先将 Unicode 转义字符转换成为它们所表示的字符[JLS 3.2] 阅读笔记

  6. __attribute__机制介绍 (转)

    1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制. __attribute__可以设置函数属性(Function Attribute).变量 ...

  7. Preferred Java way to ping a HTTP Url for availability

    I need a monitor class that regularly checks whether a given HTTP URL is available. I can take care ...

  8. 键盘事件与JS Filter

    今天在写一个JS输入文本过滤的程序,本来我的设想是在keypress事件中获取按下的键,然后再进行判断,这样的话总是出错,最后终于明白自己把事件的发生顺序搞错了,应该是先keydown,然后是keyp ...

  9. 20169210《Linux内核原理与分析》第七周作业

    第一部分:实验 首先还是网易云课堂的实验内容,扒开系统调用的三层皮(下),分为两部分: 1.给MenuOS增加time和time-asm命令 2.系统调用在内核代码中的处理过程 给MenuOS增加ti ...

  10. 推荐一个很好的富文本web编辑器UEditor

    前天产品提了一个编辑器的bug,本人找是找到了问题的症结,就是不好改.框架是压缩兼混淆后的代码.查一下,好多年前的框架... 咨询了一个同事有关旧框架的事情,他也建议我升级编辑器并帮忙帮我找了UEdi ...