WebAPI имеет соглашение об именах «FooController» для имен контроллеров. Это похоже на ASP.NET MVC. Наша кодовая база использует символы подчеркивания для разделения слов в идентификаторе с именем, например. "Foo_Bar_Object". Чтобы имена контроллеров соответствовали этому соглашению, нам нужен способ назвать наши контроллеры «Foo_Controller».Имена контроллеров WebAPI с символами подчеркивания
В принципе, мы не хотим, чтобы URL-маршруты выглядели как «oursite.com/api/foo_/», и мы не хотим делать исключения во всем мире для подчеркивания (например, config маршрута, имена представления папки и т. д.). Для того, чтобы сделать это в MVC, мы делаем:
Global.asax
protected void Application_Start() {
...
ControllerBuilder.Current.SetControllerFactory(new Custom_Controller_Factory());
}
Custom_Controller_Factory.cs
public class Custom_Controller_Factory : DefaultControllerFactory
{
protected override Type GetControllerType(RequestContext request_context, string controller_name)
{
return base.GetControllerType(request_context, controller_name + "_");
}
}
Это, кажется, полностью заботиться о проблеме все в один раз место в MVC. Есть ли способ сделать то же самое для WebAPI? Я слышал слухи о DefaultHttpControllerFactory, но я не могу найти его нигде.
Мм, какой смысл сделать все это за дополнительную работу для себя? 'My_Class_Name' не является стандартным, и я думаю, что кто-то предложит вам пойти с' MyClassName'. –
Это чисто субъективно. Кроме того, я не определяю стандарт именования, который использует мой магазин. У нас есть десятилетия прецедента кодовой базы. – jtheis