MEF没有加载进口

时间:2012-06-28 16:45:37

标签: asp.net-mvc-3 mef

我有一个主应用程序,将有很多插件。以下是我主应用中的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。

如果您需要任何说明,请告诉我们!谢谢!

1 个答案:

答案 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