当前位置: 主页 > 电脑软件维修 > C插件开辟简单模型

C插件开辟简单模型

发布时间:12-18 06:03点击:

  一、序文

  插件模型支使用次第由一些动态的模块构成,每个模块均存正正在一个或者许多个服务,并中意一定的插件协议,能够凭仗主次第实现主次第-插件,插件-插件之间的通讯。它定义了一套公共的接口,通过接口与插件中止通信,主要是通过反射来获取相关的属性和方法,然后再执行指定的操作。着实,它也可以理解为定义一套通用的解决方案,通过反射来获取照应的次第集的相关类型,然后执行这些指定类型的相关操作。它是一种即插即用的方案,复古及简便。

  朱文仅仅是描述插件开辟的大体模型,设计比较简单,主要的办法如下:

  (1)、定义公共的接口以及抽象类。

  (2)、定义和实现相关组件。

  (3)、实现通用次第集反射操作类。

  过程,公共的接口和抽象类定义正正在组件Jasen.Framework.Core中,该组件中需求通用次第集反射操作类AssemblyUtility;细致实现的相关组件为Jasen.Framework.Oracle、Jasen.Framework.Access和Jasen.Framework.SqlServer,它们都实现了Jasen.Framework.Core中的公共接口。客户端可以根据理论情况来中止照应的操作。相关组件图如下:

  二、公共接口和抽象类的定义以及相关组件的定义和实现

  首先,定义公共的接口以及抽象类,如下类图所示,定义一个公共的接口IDataTable,定义一个抽象类DataTable,这些公共的类型放置正正在最顶端的次第解散。而其他组件将区分重新缔造,实现相对于于应的功能,如SqlServerDataTable、OracleDataTable和AccessDataTable实现各自的功能。注意:Assembly.LoadFile(file)动态加载次第集时,该次第集正正在当前的运行中必须没有存正在的,要没有可以会出现意料没有到的数据异常,因此相关组件的实现必须是的(仅仅是实现公共的接口)。

  三、通用次第集反射操作类的实现

  下面的AssemblyUtility主要是关于次第集操作的通用类,可以根据指定目录以及材料列表动态获取照应的次第集。同时,也可以通过目录,材料以及次第集获取相关的类型遣散和关于象遣散。过程需要注意的是,实现的子类必须需求默认构造函数。客户端可以通过该类获取照应的类型和关于象遣散,然后再执行照应的操作。这些操作都是通过动态加载次第集来实现的,代码如下所示:

  以上3个方法根据没有同的参数(目录、地方、次第集)来动态获取次第解散的定然类型遣散,这些类型为类型T的类或者许许子类(非抽象类和接口)。

  而以上3个方法根据没有同的参数(目录、地方、次第集)来动态获取次第解散的定然关于象遣散,这些关于象为类型T的类或者许许子类(非抽象类和接口)的实例。当组件中子类存正在有参构造函数时,必须实现默认构造函数。从如下代码可以看出:如果默认构造函数没有存正在,将没有会平添该关于象实例。

  ConstructorInfoconstructor

  {

  }

  {

  result.Add((T)instance);

  }

  四、通用次第集反射操作类的单元测试

  AssemblyUtility类主要的单元测试如下,仅验证了精确的情况,代码如下:

  五、总结

  全文中主要围绕AssemblyUtility通用类来中止的,仅仅是插件开辟的一个思。细致运用的话,应该相对于于来说比较直接,正正在客户端获取照应的类型遣散以及关于象遣散,然后再执行这些遣散的细致操作即可。过程,实现的组件(插件)放置正正在指定的目录下,通过AssemblyUtility类即可动态加载目录下的次第集,从而获取到指定类型的数据。细致执行什么操作,实现什么功能,这些都是正正在组件(插件)中实现即可。

  源代码下载:C#插件开辟模型源代码

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
电脑维修