當依賴沒有實例化時,如何調試依賴注入(使用Unity DI)?如何調試依賴項無法實例化時?
如給定一個服務類的依賴關係:
public class FooService : IFooService
{
[Dependency]
public BarService BarService { get; set; }
[Dependency]
public AnotherService AnotherService { get; set; }
// other code fails because BarService and AnotherService are null
}
而且在Global.asax.cs中
private void ConfigureIoC()
{
container
.ConfigureAutoRegistration()
.LoadAssembliesFrom(assemblyPaths)
.ExcludeSystemAssemblies()
.Include(If.Any, Then.Register())
.ApplyAutoRegistration();
var serviceLocator = new UnityServiceLocator(container);
ServiceLocator.SetLocatorProvider(() => serviceLocator);
}
的IFooService也由統一實例化,但使用構造函數注入,而不是(這作品):
public class FooController : Controller
{
private readonly IFooService _fooService;
public FooController(IFooService fooService)
{
_fooService = fooService;
}
}
我該如何調試,看看爲什麼依賴關係失敗要實例化。沒有例外被拋出(或者如果他們是Elmah沒有捕獲和記錄它們)。
請避免在您的問題標題中包含諸如_C#,調試,Unity,依賴注入等內容。這就是標籤的用途。 – 2012-03-09 01:21:44
我在這種情況下通常會做的事情是將我的代碼單元與Unity的* source *項目鏈接起來,然後再單步執行Unity代碼,以查看如何解決問題。 – 2012-03-09 04:17:18