私は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しようとしたが、私は、私は上記のエラーを持っている設定への同じを移動したとき。前もって感謝します。
こんにちは@RB。アップデートいただきありがとうございます。しかし、私はすでに "IUnityContainer container = new UnityContainer()。LoadConfiguration(section);"というフロントエンドコード(上に掲載)で見つけることができるように設定を読み込んでいます。 –