.net MEF CompositionContainer缺少ComposeParts扩展方法
我试图将部件的MEF组合抽象为一个类库类,但在.Net4.5 RC中遇到了问题,因为类库CompositionContainer中没有ComposeParts扩展方法 我是做错了什么,还是遗漏了一个参考资料 WCF服务类工作容器.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
<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