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 に答える