我有兩個獨立的項目...一個項目使用Simple Injector和另一個Unity。從簡單的注入項目中,我嘗試使用Unity爲其DI註冊位於項目中的類的接口/實現。我可以成功地做到這一點並獲得對課程的訪問權限,但在該課程中標記爲Unity [依賴項]的任何內容都無法解析。我可以將這些依賴項註冊到Simple Injector容器,但是一旦使用Unity進入課程,它就會失去它。依賴注入 - 如何在實現使用Unity for DI時使用簡單注入器注入接口的實現
實施例:
PROJECT1(使用簡單注射器)
public class StartUp {
var container = new Container();
container.RegisterSingleton(typeof(IGenericRepo<>), typeof(GenericRepo));
container.RegisterSingleton<IService, Service>();
//more code below etc...
}
public class TestController
{
private readonly IService service;
public TestController(IService service)
{
this.service = service;
}
public void TestMethod()
{
var test = service.GetEverything();
}
}
Project2的(使用Unity)
public class Service : IService
{
[Dependency]
public IGenericRepo<ServiceObj> _serviceRepo { private get; set; }
public IQueryable<ServiceObj> GetEverything()
{
return _serviceRepo.Get();
}
}
通過以上的例子中,我能到GetEverything方法在Project 2中,但是_serviceRepo依賴性爲空。有沒有辦法讓它知道從Project1使用註冊的GenericRepo <>?
這可能嗎?
謝謝! Ryan
你在哪裏註冊你的serviceRepo在項目二?請參閱:https://msdn.microsoft.com/en-us/library/dn178463(v=pandp.30).aspx – kmac
Project2目前沒有明確註冊任何東西...目前使用的唯一其他項目有在其他Unity項目中,在web.config中完成註冊或者在應用程序中顯式地使用容器。 – Contissi
您可能能夠將第一個項目dll包含在第二個項目的引用中,然後進行註冊。 – kmac