Я использую DryIOC.WebAPI для решения своих APICконтроллеров.Резервный контроллер DryIOC WebAPI
WebAPI Config таким образом:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.EnableCors();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Startup.IocContainer.WithWebApi(config);
Startup.IocContainer.RegisterWebApiControllers(config);
}
}
Его работает прекрасно, пока я не забудьте создать отображение в контейнер МОК. В этом случае преобразователь зависимостей не сможет создать экземпляр APIController с использованием DryIOC.
Когда это происходит, оно возвращается к стандартным преобразователям WebAPI, которые затем запираются с ошибкой «Нет конструктора по умолчанию».
Это нежелательное поведение для меня. Если разрешение DryIOC выходит из строя, я хочу, чтобы все прекратилось там - не было возврата к реализации по умолчанию, и не было неточное сообщение об отсутствии конструктора по умолчанию. Я хочу знать, какие типы DryIOC не могут решить, поэтому я могу это исправить.
Как я могу это достичь?
вы можете переопределить распознаватель по умолчанию самостоятельно, прежде чем передавать его в DryIOC и остановить его – Nkosi
Я сделал запрос DryIOC Pull: https://bitbucket.org/dadhi/dryioc/pull-requests/15/changed-the- разрешение-поведение-to-throw/diff – reach4thelasers
, что делает изменения в структуре DryIOC довольно экстремальными. Вы должны воспользоваться возможностью расширения, которую позволяет веб-api. Посмотрев, как источник DryIOC заменяет средство распознавания по умолчанию, а не завершает его, я отредактирую свой ответ, чтобы показать, как вы могли бы обернуть DryIOCResover и выбросить ошибку, которую вы хотите. – Nkosi