Конструктор инжекционный в MVC 3 - PullRequest
0 голосов
/ 17 марта 2011

У меня есть этот код в моем контроллере:

public class IssueController : BaseController, IIssueController
{

    #region Members

    IPublicationsManagementService publicationService;

    #endregion

    #region Constructors

        public IssueController(IPublicationsManagementService publicationService)
        {
            this.publicationService = publicationService;
        }

    #endregion

   public ActionResult IssueSearch()
    {

        return View(new IssueSearchViewModel()
        {
            Magazines
                = new SelectList(publicationService.GetAllProducts(), "Id", "Name")
        });
    }

и зависимости внедрения в веб-конфигурации:

<register type="Infoquality.PSMS.Presentation.Web.MVC.Client.Controllers.IIssueController, PSMS.Presentation.Web.MVC.Client"
   mapTo="Infoquality.PSMS.Presentation.Web.MVC.Client.Controllers.IssueController, PSMS.Presentation.Web.MVC.Client">
          <lifetime type="PerWebRequest" />
          <constructor>
            <param name="publicationService">
              <dependency name="sd"/>
            </param>
          </constructor>

 <register type="Infoquality.PSMS.Application.Publications.PublicationsManagement.IPublicationsManagementService, PSMS.Application.Publications"
     mapTo="Infoquality.PSMS.Application.Publications.PublicationsManagement.PublicationsManagementService, PSMS.Application.Publications" 
                  name="sd">
          <lifetime type="singleton" />
        </register>

Когда я запускаю приложение, ошибка:

Ошибка источника:

Во время выполнения текущего веб-запроса возникло необработанное исключение. Информация о происхождении и местонахождении исключения может быть идентифицирована с помощью приведенной ниже трассировки стека исключений.

Трассировка стека:

[MissingMethodException: нет конструктор без параметров, определенный для этот объект.]
System.RuntimeTypeHandle.CreateInstance (RuntimeType тип, логическое publicOnly, логическое noCheck, Boolean & canBeCached, RuntimeMethodHandleInternal & ctor, Boolean & bNeedSecurityCheck) + 0
System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, логическое пропуститьCheckThis, Boolean fillCache) + 98
System.RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, логическое skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241 System.Activator.CreateInstance (Тип тип, логическое непубличное значение) + 69
System.Web.Mvc.DefaultControllerActivator.Create (RequestContext requestContext, Type controllerType) + 67

Мне нужен ASP.NET MVC 3 и механизм бритвы для вызова параметризованного конструктора.

1 Ответ

1 голос
/ 29 сентября 2011

Вам необходимо реализовать интерфейс IDependencyResolver. Сделав это, вы можете использовать внедрение зависимостей в любом месте приложения MVC 3, даже представления (хотя внедрение свойств только).

...