Home > Blockchain >  How to create a static array from objects in controller (ASP.NET MVC) without overwriting every time
How to create a static array from objects in controller (ASP.NET MVC) without overwriting every time

Time:01-21

I have an ASP.NET MVC web application. In the HomeController, I want to create an array of objects of the class I need, so that when new objects are written to this array, it would not be overwritten, but added as new elements to itself.

For example: this is a piece of code from HomeController. Here I create a static array of objects so that we can access it without creating a class object.

// ...

public static List<Person> personMessages { get; set; }

public HomeController()
{
    personMessages = new List<Person>();
}

// ...

And this is the code from another class, in which I add new objects to this array (personMessages).

HomeController.personMessages.Add(personObj);
Console.WriteLine("Array count: "   HomeController.personMessages.Count);

When my application is running, after each addition of a new object, the length of the array will always be 1 and it will contain the last added object.

How to solve my problem and create something like a data repository (based on my array of objects personMessages)?

CodePudding user response:

This is really bad to have personMessages as a member of the controller class. and you are accessing it using the controller class. It violates the single responsibility principle as well.

you should create a repository class and have a static member of it. you can create a method to add an item to the list.

public static class PersonRepository
{
    public static List<Person> personMessages { get; set; } = new List<Person>();

    public static void AddPerson(Person person)
    {
        personMessages.Add(person);
    }
}

you can call the method like this PersonRepository.AddPerson(personObj);

As a suggestion, I think you should use some logging instead of Console.WriteLine as it's not a console application.

  • Related