複数のモジュール(ユーザー、プロジェクト、支払い、請求書など)を使用してアプリケーションを開発しています。これらの各モジュールには、App.Controlsという名前の共有コントロールを含む共通モジュールへの参照があります。App.Controlsには、OK / Saveボタンといくつかの一般的な機能を備えた単なるシェルビューである、OKSaveDialogViewと呼ばれるビューが含まれています。OKSaveDialogViewは、再利用性のために適切なコンテンツを動的にロードします。残念ながら、App.Controlsパーツがカタログに複数回読み込まれているため、エラーが発生します。
1)制約に一致する複数のエクスポートが見つかりました'((exportDefinition.ContractName == "App.Controls.ViewModels.OkCancelDialogViewModel")
これがどのように起こっているのか、どこからデバッグを始めればよいのかわかりません。誰かが私を正しい方向に向けることができますか?
以下は、プロジェクトからのいくつかのコードの抜粋です。
OKCaneclDialogView.Xaml.VB
<Export("OkCancelDialogView")> _
<PartCreationPolicy(CreationPolicy.NonShared)> _
Partial Public Class OkCancelDialogView
Inherits UserControl
Public Sub New()
InitializeComponent()
End Sub
<Import()> _
Public Property ViewModel() As OkCancelDialogViewModel
Get
Return Me.DataContext
End Get
Set(value As OkCancelDialogViewModel)
Me.DataContext = value
End Set
End Property
End Class
OkCancelDialoViewModel.vb
<Export()> _
<PartCreationPolicy(CreationPolicy.NonShared)> _
Public Class OkCancelDialogViewModel
Inherits ViewModelBase
Implements INavigationAware
Implements IPartImportsSatisfiedNotification
'Implements IOkCancelDialogViewModel
'Services
'Private ReadOnly regionManager As IRegionManager
Private WithEvents userService As IUserDataService
Private navigationJournal As IRegionNavigationJournal
Private Const UserIdKey As String = "PrimaryId"
Private Const SecondaryIdKey As String = "SecondaryId"
Private Const DialogContentKey As String = "DialogContent"
'DialogViewModelDictionary
Private DialogViewModelDictionary As DialogViewModelDictionaries
Public Sub New()
Me.New(New RegionManager)
End Sub
<ImportingConstructor()> _
Public Sub New(regionManager As IRegionManager)
'Setup the global region manager
Me.RegionManager = regionManager
'Setup the locally scoped region manager
Me.LocalRegionManager = regionManager.CreateRegionManager
Me.synchronizationContext = If(synchronizationContext.Current, New SynchronizationContext())
'Setup commands
Me._closeCommand = New DelegateCommand(AddressOf OnClose)
Me._okSaveCommand = New DelegateCommand(AddressOf Me.OnOkSave, AddressOf Me.CanClickOkSave)
Me._CancelCommand = New DelegateCommand(AddressOf Me.OnCancel, AddressOf Me.CanClickCancel)
DialogViewModelDictionary = New DialogViewModelDictionaries
DialogViewModelDictionary.AddDialogViewModel("EditAddressDialogView", New EditAddressDialogViewModel())
End Sub