0

パーツのMEF構成をクラスライブラリクラスに抽象化しようとしていますが、ComposeParts拡張メソッドがクラスライブラリCompositionContainerで使用できないため、.Net4.5RCで問題が発生しています。

私は何か間違ったことをしているのですか、それとも参照が欠落しているのでしょうか?

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

クラスライブラリ-ComposePartsメソッドがありません

Imports System.ComponentModel.Composition.Hosting

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

ここに画像の説明を入力してください

4

1 に答える 1

2

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
于 2012-09-07T10:47:26.900 に答える