• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > net编程 >

如何使用托管扩展框架(2)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-06-27点击:

Public Overloads Property MainWindow() As Window
Get
Return MyBase.MainWindow
End Get
Set(ByVal value As Window)
MyBase.MainWindow = value
End Set
End Property

 

在VB中则更为详细。应用程序框架会绕开主窗口的属性,自动对指定窗口进行实例化操作。禁用应用程序框架并往Application.xaml.vb文件中添加一个Sub Main:

'''
'''Application Entry Point.
'''
_
Public Shared Sub Main()
Dim app As Application = New Application
app.Run()
End Sub

这会导致应用程序通过所有物检索主窗口以至于在主窗口中评估MEF请求。主窗口将自己输出到MEF以匹配MainWindow所有物的输入:

_

Partial Public Class Main

主窗口使用MEF来发掘可获取的执行IExtension接口的扩展:

_

Private exportExtensions As ExportCollection( _

Of IExtension)

任何出现在目录或人为添加到容器以及执行了IExtension接口的数据都会出现在集合中。注意这会创建Export对象的集合,该集合 包含足够的信息使扩展实例化,但是它们还没有将其实例化。对于保存性能来说这显得尤为重要。主窗口会用标准WPF代码填充菜单:

Private Sub Main_Loaded() Handles Me.Loaded
For Each export In exportExtensions
Dim newItem = New MenuItem()
newItem.Header = export.Metadata("MenuCaption")
Me.ExtensionMenu.Items.Add(newItem)
Next
End Sub

注意菜单标题取自MEF元数据。虽然这样有效,但是你的目标是要让编写扩展变得更简单。该元数据方法要求程序员懂得使用确切字符串“MenuCaption”的方法。使用强类型MEF元数据可以解决这一问题。首先,创建一个接口:

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ