2017-03-27 16 views
3

Prism.WpfPrism.Unity NuGetパッケージ(どちらも6.3.0)を使用するWPFアプリケーションがあります。私は現在、Bootstrapperクラス(下記参照)内のUnityコンテナのタイプを手動で登録していますが、すべてがうまくいきます。私は慣例によりタイプを登録しようとすると、ユニティ・コンテナ内の型を登録するときUnity with Prismを使用して慣習でタイプを登録するには?

internal class Bootstrapper : UnityBootstrapper 
{ 
    protected override DependencyObject CreateShell() 
    { 
     return Container.Resolve<MainWindow>(); 
    } 

    protected override void InitializeShell() 
    { 
     Application.Current.MainWindow.Show(); 
    } 

    protected override void ConfigureContainer() 
    { 
     base.ConfigureContainer(); 

     // Register types 
     Container.RegisterType<IDialogService, DialogService>(new ContainerControlledLifetimeManager()); 
    } 
} 

はしかし、私はMicrosoft.Practices.Unity.DuplicateTypeMappingExceptionを取得します。

慣例コードによって

レジスタ:

protected override void ConfigureContainer() 
{ 
    base.ConfigureContainer(); 

    // Register types by convention 
    Container.RegisterTypes(
     AllClasses.FromLoadedAssemblies(), 
     WithMappings.FromMatchingInterface, 
     WithName.Default, 
     WithLifetime.ContainerControlled); 
} 

例外メッセージ:

An attempt to override an existing mapping was detected for type Prism.Regions.IRegionNavigationContentLoader with name "", currently mapped to type Prism.Unity.Regions.UnityRegionNavigationContentLoader, to type Prism.Regions.RegionNavigationContentLoader.

プリズム&ユニティを使用するとき、どのように私は慣例によりタイプを登録しますか?

+0

@downvoter - 質問を改善するにはどうすればよいですか?コメントなしで下降することは助けになりません... –

答えて

4

はちょうどあなたが問題ないはずですのでUnityBootstrapperのみ、以前に登録されていなかったタイプを登録しますContainer.RegisterTypes(...);base.ConfigureContainer();

を入れ替えます。

関連する問題