Asp.Net Mvc контроллер статический конструктор - PullRequest
0 голосов
/ 19 ноября 2010

Я пытаюсь создать сайт с главным контроллером. Он имеет два конструктора - статический и без параметров.По спецификации статический должен вызываться первым и один раз, чтобы инициализировать статические члены класса, но этого никогда не было, почему это так?Как я могу реализовать единое хранилище для некоторого персонала, который должен быть доступен с контроллера?

РЕДАКТИРОВАТЬ: я думаю, что я делаю некоторые ошибки, когда я пытаюсь отладить его, потому что, сегодня он работает, как ожидалось, статический конструктор вызывается один рази до обычного.

1 Ответ

1 голос
/ 19 ноября 2010

В ASP.NET MVC редко используются статические конструкторы для контроллеров.Я не знаю, чего именно вы пытаетесь достичь, но global.asax Application_Start кажется лучшим местом для инициализации приложений.И что вы подразумеваете под единым хранилищем, доступным для контроллера?Разве вы не можете использовать объект HttpContext.Cache или HttpContext.Application, который используется для хранения вещей всего приложения (в отличие от сеанса)?У них также есть то преимущество, что они безопасны для потоков, поэтому вам не нужно синхронизировать доступ к этим хранилищам.

Что касается конструктора статического контроллера, его следует вызывать перед конструктором по умолчанию и только один разза приложение, и это гарантируется CLR.Для этого он должен иметь точно следующую подпись (частный, без возвращаемого типа, то же имя, что и у содержащего типа):

public class HomeController: Controller
{
    // This is the exact signature of a static constructor
    static HomeController()
    {

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...