1 つのインフラストラクチャ (Common
ライブラリ) とShell
.
があることに注意しCommon
てくださいFooService
、これにはExportAttribute
[Export]
public class FooService
{
}
そして、これはModule1
andで使用する必要がありますModule2
が、 があるとエラーが発生しImportAttribute
ます。コメントに注意してください。
[ModuleExport("Module1.ModuleInit", typeof(Module1.ModuleInit))]
public class ModuleInit : IModule
{
private readonly IRegionManager _regionManager;
public IServiceLocator _serviceLocator;
// [Import(AllowRecomposition=true)]
public FooService _service;
[ImportingConstructor]
public ModuleInit(IRegionManager regionManager, IServiceLocator serviceLocator)
{
_regionManager = regionManager;
_serviceLocator = serviceLocator;
}
public void Initialize() { }
}
このコードは と同じですModule2
。
モジュール 'Module2.ModuleInit' の初期化中に例外が発生しました。- 例外メッセージは次のとおりです。構成は変更されません。次のエラーのため、変更は拒否されました: 構成で 1 つの構成エラーが発生しました。根本的な原因を以下に示します。詳細については、CompositionException.Errors プロパティを確認してください。
1) 制約 '((exportDefinition.ContractName == "Common.FooService") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "Common.FooService".Equals(exportDefinition.Metadata) .get_Item("ExportTypeIdentity"))))'.
結果: インポート 'Module1.ModuleInit._service (ContractName="Common.FooService")' を部分 'Module1.ModuleInit' に設定できません。要素: Module1.ModuleInit._service (ContractName="Common.FooService") --> Module1.ModuleInit --> AssemblyCatalog (Assembly="Module1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
この例外が発生するのはなぜですか? 1 つのオブジェクトをエクスポートしているだけです。何が起こっているのか、それを修正する方法を知りたいです。
非常に小さなプロジェクトですので、お気軽にダウンロードしてください。 コンパクトなプロジェクトをダウンロード