0

我有一个包含许多插件的主应用程序。这是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 没有被填充。

如果您需要任何澄清,请告诉我!谢谢!

4

1 回答 1

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
于 2012-06-28T20:38:08.540 回答