Silverligh动态加载程序集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Silverligh动态加载程序集
今天我们学习如何在Silverlight中动态的加载程序集。
一、为什么我们需要动态的加载程序集:
因为在实际开发环境中,我们编写的Xap包会越来越大,此时,我们会选择把某些功能独立的部件(例如:一个计算器引擎、一段加密方法甚至一个用户界面)放置到一个程序集中,然后在需要的时候动态去加载这个程序集,并允许用户使用封装于其中的独立部件或功能,并与宿主界面进行交互。
二、如何实现
在这里,我们将以动态加载一个自定义的用户界面来学习如何实现动态地加裁程序集。
当我们点击"动态加载编辑器(Editor)"按钮后,程序就会动态地加裁我们的"编辑器程序集",它是我们编写的一个用户UI,其界面如下:
加载后的界面如下:
然后,我们可以在用户编辑器中输入文本,并把输入的文本传递到下面的外部文本框。也可以在下面的外部文本框中输入文本,然后把输入内容传递到动态加载的用户编辑器中,效果如图:
1、编写需要动态加载的程序集
为方便起见,这个工作可以放到我们现在所处的解决方案中来实施。我们要编写一个用户编辑器,这个编辑器很简单,它由一个TextBox和一个Button组成。
它的实现步骤分为两步:一是定义接口。二是定义编辑器类
1.1、定义接口
点击解决方案,跳出右键菜单,选择"添加"--"新建项目"--"Silverlight类库",命名为: Interfaces。如图:
图片看不清楚?请点击这里查看原图(大图)。
编辑Interfaces下的Class1.cs,在此我们建立了一个自定义TextEventArgs 事件参数类和一个接口类,名为IEditUI。
代码如下:
1.2、定义用户编辑器类
用与定义接口同样的方法,我们添加一个Silverlight类库项目,命名为:Implementation。新建后,解决方案如下图:
在编写Implementation类的代码前,我们需要添加引用前面所定义的Interfaces接口,引用界面如图:
Implementation项目下的Class1.cs代码如下:
1.3、进一步准备工作
现在我们需要生成解决方案,生成后,我们需要找到Implementation项目的Bin目录下的Debug子目录,在此子目录下找到Implementation.dll,把它拷贝到SLDynamicLoadingAssembly.Web项目的ClientBin下备用(引用)。如下图:
2、编写Host界面
2.1、定义SLDynamicLoadingAssembly程序界面
编辑SLDynamicLoadingAssembly项目下的Page.xaml,内容如下:
在此我们创建了用户界面。
2.2、引用前面创建的用户界面程序集:Implementation.dll
Page.xaml.cs代码如下:
至此,重新生成解决方案并运行即可看到前面的运行效果。