我試圖注入的依賴到控制器,從一把umbraco的RenderMvcController繼承並得到錯誤使用簡單的注射器用一把umbraco控制器
「類型RenderMvcController無需註冊,可以發現和隱性登記不能進行。對於能夠創建RenderMvcController的容器,它應該只有一個公共構造函數:它有3個。有關更多信息,請參閱https://simpleinjector.org/one-constructor。
下面是我的代碼要連接的DI
var container = new Container();
container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
InitializeContainer(container);
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
private static void InitializeContainer(Container container)
{
container.Register<ICacheProvider, CacheProvider>(Lifestyle.Transient);
container.Register<ICacheService, CacheService>(Lifestyle.Transient);
}
這是一類接收所述依賴關係的一個例子,它從基類我寫
public class NewsroomController : BaseRenderMvcController
{
public NewsroomController(ICacheService cacheService) : base(cacheService) { }
基類延伸繼承RenderMvcController這是一個Umbraco控制器
public class BaseRenderMvcController : RenderMvcController
{
public ICacheService CacheService { get; set; }
public BaseRenderMvcController(ICacheService cacheService)
{
CacheService = cacheService;
}
}
正如你可以看到基地Umbraco控制米勒事實上確實有3個不同的構造
public class RenderMvcController : UmbracoController, IRenderMvcController, IRenderController, IController
{
public RenderMvcController();
public RenderMvcController(UmbracoContext umbracoContext);
public RenderMvcController(UmbracoContext umbracoContext, UmbracoHelper umbracoHelper);
我不知道怎麼去SimpleInjector與該控制器從一把umbraco繼承很好的地方。
在此先感謝!
所以這個'RenderMvcController'是一個基類,並不打算直接由用戶調用,如在'http:// mysite/rendermvc'中?誰定義了這個'RenderMvcController'?你還是它是另一個圖書館的一部分(如Umbraco本身)? – Steven
是的RenderMvcController是Umbraco自己提供的一個控制器,它在那裏繼承。 –
這就是爲什麼我製作了BaseRenderMvcController,只有這樣我才能控制一個基礎,但是我的基礎仍然需要從RenderMvcController繼承來保持Umbraco的快樂。 –