Я пытаюсь Подайте зависимость в контроллер, который наследует от RenderMvcController Umbraco и получать ошибкуИспользования Simple Инжектора с 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 Contro Мюллер ли на самом деле имеет 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»? Вы или являетесь частью другой библиотеки (например, самого Умбрако)? – Steven
Да, RenderMvcController - это контроллер, который сам Umbraco предоставляет, он там унаследован. –
Вот почему я сделал BaseRenderMvcController, так что у меня есть база, которую я могу контролировать, но моя база все еще должна унаследовать от RenderMvcController, чтобы сохранить Umbraco счастливым. –