我有一个主应用程序,将有很多插件。以下是我主应用中的PluginReader
课程:
Public Class PluginReader
<ImportMany(GetType(IWebPlugin))>
Private m_WebPlugins As IEnumerable(Of Lazy(Of IWebPlugin))
Public Sub New()
End Sub
Public Property WebPlugins As IEnumerable(Of Lazy(Of IWebPlugin))
Get
Return m_WebPlugins
End Get
Set(value As IEnumerable(Of Lazy(Of IWebPlugin)))
m_WebPlugins = value
End Set
End Property
End Class
在我的插件中,我有这段代码:
<Export(GetType(IWebPlugin))>
<PartCreationPolicy(CreationPolicy.NonShared)>
Public Class PluginClass
Implements IWebPlugin
'Code to implement IWebPlugin here
我的自定义控制器因子正确读取了我的插件的导出,我可以看到导出了IWebPlugin,但是没有填充ImportMany。
如果您需要任何说明,请告诉我们!谢谢!
答案 0 :(得分:0)
我必须在PluginReader
类中添加一个compose方法。
Private Sub Compose()
Dim catalog As AggregateCatalog = New AggregateCatalog()
catalog.Catalogs.Add(New DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory & "bin"))
Dim container As New CompositionContainer(catalog)
container.ComposeParts(Me)
End Sub
这是我的构造函数:
Public Sub New()
Compose()
End Sub