一、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. Excel通过宏创建百万数据

    打开视图->宏->编辑,代码如下,cells(n,m)表示当前Excel表格第n行第m列</span> Sub newdata() Dim i As Long Cells(i, ...

  2. calabash-android Win10 入门笔记

    参考官方文档:https://developer.xamarin.com/guides/testcloud/calabash/   概述     Calabash是一个BDD的UI自动化验收测试框架, ...

  3. Java Web SSH框架总是无法写入无法读取Cookie

    不关乎技术,关乎一个小Tips: 默认情况下,IE和Chrome内核的浏览器会认为http://localhost为无效的域名,所以不会保存它的cookie,使用http://127.0.0.1访问程 ...

  4. [MarsZ]Unity3d游戏开发之Unity3d全策划配置新手指引

    Unity3d全策划配置新手指引 前言... 2 版本... 2 作者... 2 功能... 2 类型... 2 触发类型... 2 步骤类型... 3 实现... 4 简要... 4 策划方面... ...

  5. poj 3304 Segments(计算几何基础)

      Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11593   Accepted: 3657 Descr ...

  6. phpnow下mysqli加载不了的问题

    用了phpnow也有蛮长一段时间了.一直感觉还不错,不过就是差点把手动配置apache/php/mysql环境的方法都给忘了. 这几天一直都在找crm系统,可惜没有几个满意的.今天逛上了weberp这 ...

  7. 【转】【阮一峰的网络日志】Git 使用规范流程

    作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是Th ...

  8. c#+ArcEngine中的IGroupLayer的用法

    转自羊子雄起原文c#+ArcEngine中的IGroupLayer的用法 在AE开发中,我们知道axMapControl.LayerCount能获取图层的数量,但是这种方法不能获取到图层组里面的图层, ...

  9. svn 被锁定

    遇到svn被锁定,clearup 不管用一直报错 用命令行解决了 问题 : command line -> cmd>svn help>svn cleanup>exit

  10. 在Delphi中实现HexToStr函数和StrToHex函数

    function TransChar(AChar: Char): Integer; begin '] then Result := Ord(AChar) - Ord(') else Result := ...