2016-05-29 13 views
1

私はUnity DIを初めて使用しています。依存関係を解決する際にエラーが発生しました。エラーメッセージに「現在のタイプ、Data.Core.Repository.ILoggerはインタフェースであり、構築できません。タイプマッピングがありませんか?」Unity DIの設定

下記の設定とコード。

CONFIG

<configSections> 
    <section name="unity" 
    type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> 
    </configSections> 

    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <assembly name ="BusinessLogic"/> 
    <assembly name ="Data.Core"/> 
    <namespace name="Data"/> 
    <namespace name="Data.Core"/> 
    <namespace name="Data.Core.Implimentation"/> 
    <namespace name="Data.Core.Repository"/> 
    <namespace name="BusinessLogic" /> 

    <typeAliases> 
     <typeAlias alias="Logger1" type="Data.Core.Implimentation.Logger1,Data.Core.Implimentation" /> 
     <typeAlias alias="Logger2" type="Data.Core.Implimentation.Logger2,Data.Core.Implimentation" /> 
     <typeAlias alias="ILogger" type="Data.Core.Repository.ILogger,Data.Core.Repository" /> 
    </typeAliases> 
    <container> 
     <register type="ILogger" mapTo="Logger2" name="Loggerxcs" > 
    </register> 
    </container> 

コンソールアプリケーション(フロントエンド)

var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); 
     IUnityContainer container = new UnityContainer().LoadConfiguration(section); 


     // Resolving Dependancy Error is @ here 
     LoggerBL _logger = container.Resolve<LoggerBL>(); 

ビジネスロジック

// File Logger 
    private ILogger _logger;// = new Data.Core.Implimentation.Logger2(); 

    public LoggerBL(ILogger logger) 
    { 
     _logger = logger; 
    } 

    public string LogToFile() 
    { 
     return _logger.LogToFile(); 
    } 
} 

とそのすべての罰金、私は

  IUnityContainer container = new UnityContainer(); 
     container.RegisterType<ILogger, Logger2>(); 

次を使用して、C#コードからdepndancyをresoveしようとしたが、私は、私は上記のエラーを持っている設定への同じを移動したとき。前もって感謝します。

+0

こんにちは@RB。アップデートいただきありがとうございます。しかし、私はすでに "IUnityContainer container = new UnityContainer()。LoadConfiguration(section);"というフロントエンドコード(上に掲載)で見つけることができるように設定を読み込んでいます。 –

答えて

0

設定バージョンでは、マッピングに「Loggerxcs」という名前が付けられています。

ただし、LoggerBLは無名のILoggerをパラメータとして使用します。

は、あなたの設定から

name="Loggerxcs" 

を削除し、あなたは問題ないはずです。

+0

パーフェクト!ありがとうございました。それは不具合でした。 –

関連する問題