Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net MEF CompositionContainer缺少ComposeParts扩展方法_.net_Vb.net_Extension Methods_Mef_.net 4.5 - Fatal编程技术网

.net MEF CompositionContainer缺少ComposeParts扩展方法

.net MEF CompositionContainer缺少ComposeParts扩展方法,.net,vb.net,extension-methods,mef,.net-4.5,.net,Vb.net,Extension Methods,Mef,.net 4.5,我试图将部件的MEF组合抽象为一个类库类,但在.Net4.5 RC中遇到了问题,因为类库CompositionContainer中没有ComposeParts扩展方法 我是做错了什么,还是遗漏了一个参考资料 WCF服务类工作容器 <Import(GetType(IGenericModelFactory))> Public Property ModelFactory As IGenericModelFactory Private _mefContainer As Compositio

我试图将部件的MEF组合抽象为一个类库类,但在.Net4.5 RC中遇到了问题,因为类库CompositionContainer中没有ComposeParts扩展方法

我是做错了什么,还是遗漏了一个参考资料

WCF服务类工作容器

<Import(GetType(IGenericModelFactory))>
Public Property ModelFactory As IGenericModelFactory

Private _mefContainer As CompositionContainer
Private _catelog As DirectoryCatalog

Public Sub New()
    _catelog = New DirectoryCatalog(".")
    _mefContainer = New CompositionContainer(_catelog)
    _mefContainer.ComposeParts(Me)
End Sub

看起来您必须包含
System.ComponentModel.Composition
名称空间

Imports System.ComponentModel.Composition.Hosting
Imports System.ComponentModel.Composition

Namespace Core.Composition

    Public Class CompositionBuilder
        Implements IComposeObjects

        Public Function CreateContainer() As CompositionContainer Implements IComposeObjects.CreateContainer
            Return Activator.CreateInstance(Of CompositionContainer)()
        End Function

        Public Sub ComposeFromDirectory(directory As String, compositionRoot As Object) Implements IComposeObjects.ComposeFromDirectory

            Dim catelog As DirectoryCatalog = Activator.CreateInstance(GetType(DirectoryCatalog), directory)
            Dim mefContainer As CompositionContainer = Activator.CreateInstance(GetType(CompositionContainer), catelog)
            mefContainer.ComposeParts(compositionRoot)

        End Sub

    End Class

End Namespace

谢谢,我有点明白了,但最终删除了System.ComponentModel.Composition.Hosting命名空间,因为我意识到两者都需要存在。
Imports System.ComponentModel.Composition.Hosting
Imports System.ComponentModel.Composition

Namespace Core.Composition

    Public Class CompositionBuilder
        Implements IComposeObjects

        Public Function CreateContainer() As CompositionContainer Implements IComposeObjects.CreateContainer
            Return Activator.CreateInstance(Of CompositionContainer)()
        End Function

        Public Sub ComposeFromDirectory(directory As String, compositionRoot As Object) Implements IComposeObjects.ComposeFromDirectory

            Dim catelog As DirectoryCatalog = Activator.CreateInstance(GetType(DirectoryCatalog), directory)
            Dim mefContainer As CompositionContainer = Activator.CreateInstance(GetType(CompositionContainer), catelog)
            mefContainer.ComposeParts(compositionRoot)

        End Sub

    End Class

End Namespace