Тип String не может быть создан

4 ответа

В качестве примера кода я предполагаю, что вы используете контроллер, а не API-контроллер (из веб-API).

Ваш контроллер API зависит от конструктора из HttpConfiguration. Контейнер, вероятно, не имеет этого определения для этого типа и, следовательно, не знает, как его решить, и string в сообщении об ошибке должно исходить из этого типа в качестве зависимости. Я рекомендую вам использовать статический класс GlobalConfiguration и получить доступ к свойству Configuration, чтобы получить экземпляр HttpConfiguration. Вы можете абстрагировать его в свойстве, например, для: Контроллеры API) и получить экземпляр HttpConfiguration.

23
ответ дан Felipe Oriani 11 May 2015 в 11:43
поделиться

Я думаю, что лучше добавить атрибут InjectionConstructor в конструктор по умолчанию. Этот атрибут заставляет единицы использовать декорированный конструктор.

Пример:

public class HelpController : Controller
{
    private const string ErrorViewName = "Error";

    [InjectionConstructor]
    public HelpController()
        : this(GlobalConfiguration.Configuration)
    {
    }
38
ответ дан user3221409 11 May 2015 в 11:43
поделиться

Причина этого заключается в том, что Unity по умолчанию выберет использование конструктора с наибольшим количеством параметров, минуя конструктор по умолчанию.

Закомментируйте два конструктора, которые существуют в шаблоне HelpController, и добавьте конструктор по умолчанию, который задает конфигурацию.

    //public HelpController()
    //    : this(GlobalConfiguration.Configuration)
    //{
    //}

    //public HelpController(HttpConfiguration config)
    //{
    //    Configuration = config;
    //}

    public HelpController()
    {
        Configuration = GlobalConfiguration.Configuration;
    }
6
ответ дан Always Learning 11 May 2015 в 11:43
поделиться

Регистрация объекта HttpConfiguration как экземпляра в UnityContainer также поможет решить проблему.
Просто нужно добавить, чтобы добавить строку ниже при регистрации в UnityContainer.

public static void RegisterTypes(IUnityContainer container) {
    container.RegisterInstance<HttpConfiguration>(GlobalConfiguration.Configuration);
}

Это поможет Unity разрешить параметр config, когда он вызывает конструктор с параметром.

public HelpController(HttpConfiguration config) {
    Configuration = config;
}
2
ответ дан Dovydas Šopa 11 May 2015 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: