基本的なMEFの問題と思われるものを解決できません。2つの「プラグイン」プロジェクト(P1とP2と呼びます)と、両方のプラグインに共通する3番目のプロジェクト(Cと呼びます)があります。 。P1とP2は両方ともCを参照します。
P1に存在するコンポーネントをインポートしようとすると、このコンポーネントはCに存在するコンポーネントに依存しているため、失敗します。
トレースは次のとおりです。
System.ComponentModel.Composition警告:1:ComposablePartDefinition'MyCompany.Client.Pms.Plugin.InclusionList.ViewModel.InclusionListViewModel'が拒否されました。構成は変更されません。次のエラーのため、変更は拒否されました。コンポジションで複数のコンポジションエラーが発生し、4つの根本原因がありました。根本的な原因を以下に示します。詳細については、CompositionException.Errorsプロパティを確認してください。
1)制約に一致するエクスポートが見つかりませんでした'((exportDefinition.ContractName = "MyCompany.Client.Plugins.Common.Controls.Selectors.PortfolioSelectors.ViewModel.ICalypsoBookSelectorViewModel")&&(exportDefinition.Metadata.ContainsKey( "ExportTypeIdentity")&& "MyCompany.Client.Plugins.Common.Controls.Selectors.PortfolioSelectors.ViewModel.ICalypsoBookSelectorViewModel" .Equals(exportDefinition.Metadata.get_Item( "ExportTypeIdentity"))))'。
結果:パーツ'MyCompanyにインポート'MyCompany.Client.Pms.Plugin.InclusionList.ViewModel.InclusionListViewModel.CalypsoBookSelectorViewModel(ContractName = "MyCompany.Client.Plugins.Common.Controls.Selectors.PortfolioSelectors.ViewModel.ICalypsoBookSelectorViewModel")'を設定できません。 .Client.Pms.Plugin.InclusionList.ViewModel.InclusionListViewModel'。要素:MyCompany.Client.Pms.Plugin.InclusionList.ViewModel.InclusionListViewModel.CalypsoBookSelectorViewModel(ContractName = "MyCompany.Client.Plugins.Common.Controls.Selectors.PortfolioSelectors.ViewModel.ICalypsoBookSelectorViewModel")-> MyCompany.Client.Pms.Plugin .InclusionList.ViewModel.InclusionListViewModel-> DirectoryCatalog(Path = "C:\ Work \ mmtrader \ dashboard \ Code \ Src \ Dashboard \ MM \ Trader \ bin \ Debug \ Plugins \ Positions")
[...](他の3つの問題は、異なるビューモデルでまったく同じです)
MEFカタログを調べたところ、MEFはそれらのビューモデルを知っていることがわかったので、何が欠けているのかわかりません。
以下のデニスからのリクエストに応じて、これが私のインポート/エクスポートです。
書き出す:
Export(typeof(ICalypsoBookSelectorViewModel))]
public class CalypsoBookSelectorViewModel : ScreenWithCleanupLifecycle, ICalypsoBookSelectorViewModel
{...}
輸入:
[Import(typeof(ICalypsoBookSelectorViewModel))]
public ICalypsoBookSelectorViewModel CalypsoBookSelectorViewModel { get; set; }
そしてカタログ:
よろしくお願いします!