как создать статический масив из обьектов в контролере, что бы он не перезаписывался каждый раз
У меня есть классическое приложение написанное на платформе ASP.NET (MVC WEB APP).
В контроллере HomeController я хочу создать такой массив из обьектов нужного мне класса, что бы при записи в этот масив новых обьектов он не перезаписывался, а просто добавлял в себя новые элементы.
К примеру:
Это кусочек кода из контроллера HomeController. Здесь я создаю статический масив из обьектов что бы можна було к нему обратиться не создавая обьекта класа.
...
public static List<Person> personMessages { get; set; }
public HomeController()
{
personMessages = new List<Person>();
}
...
А это код из другого класса, в котором я добавляю новые обьекты в этот масив.
...
HomeController.personMessages.Add(personObj);
Console.WriteLine("Array count: " + HomeController.personMessages.Count);
...
Когда мое приложение работает, то после кажного добавления нового обьекта - длина массива всегда будет равна 1 и он будет содержать последний добавленный обьект.
Как решить мою проблему и создать что то на подобии репозитирия данных (мой массив personMessages)?
Ответы (1 шт):
У тебя свойство personMessages статическое, а конструктор HomeController нет. Каждый раз создавая экземпляр HomeController, ты пересоздаёшь personMessages, то есть старый personMessages "затирается" новым, и ты уже в новый добавляешь значения. Возможно нужно просто перенести инициализацию personMessages из HomeController в другое место, в статический конструктор например:
public static List<Person> personMessages { get; set; };
static HomeController()
{
personMessages = new List<Person>();
}
public HomeController()
{
//personMessages = new List<Person>(); это переносим в статический конструктор,
//если в этом конструкторе больше ничего не делается, то его можно вообще удалить
}