'I want to create a register method and store it in list, is this approach fine? C#

enter image description here

Hi there I am trying to create a terminal based application in C#. However I am getting confused. I have a list in memberrecord class, User is the parent class whereas admin & ProjectMember are its children. I want to be able to register a projectmember object by getting inputs from user; I want the new registered projectmember to be added in the list in memberrecord. In the admin class I want to check if the register method is working fine and it is printing out the users list. When I try to code it out and create a register method in User Parent class and try to print it, it is not printing and not showing up. In which class should I create the regiter method? And also the print method?

    public class UserRecord
    {

        private List<User> _users;
        public UserRecord()
        {
            _users = new List<User>();
        }

        public List<User> Users
        {
            get { return _users; }
            set { _users = value; }
        }

        public void AddUser(User u)
        {
            _users.Add(u);
        }

        public int NoOfUser()
        {
            return _users.Count;
        }

        public void PrintUser()
        {
            foreach (User u in _users)
            {
                Console.WriteLine(u.Id + u.Name);
            }
        }

        public void RegisterUser()
        {
            ProjectMember projectMember = new ProjectMember();
            System.Console.WriteLine("Enter ID:");
            projectMember.Id = Convert.ToInt16(Console.ReadLine());
            System.Console.WriteLine("Enter Name:");
            projectMember.Name = Console.ReadLine();
            System.Console.WriteLine("Type of member");
            int input;
            input = Convert.ToInt16(Console.ReadLine());
            if (input == 1)
            {
                projectMember.MemberType = MemberType.Manager;
            }
            else
            {
                projectMember.MemberType = MemberType.Member;
            }

            Console.WriteLine(projectMember.Id + projectMember.Name);
            UserRecord userRecord = new UserRecord();
            userRecord.AddUser(projectMember);
        }
    }

and enum MemberType:

    public enum MemberType
    {
        Manager, Member
    }

And ProjectMember class:

    public class ProjectMember : User
    {
        private MemberType _memberType;
        public MemberType MemberType
        {
            get { return _memberType; }
            set { _memberType = value; }
        }

        public ProjectMember(int id, string name, MemberType memberType) : base(id, name)
        {
            _memberType = MemberType;
        }

        public ProjectMember(){ }        
    }

and Admin class:

    public class Admin : User
    {
        public Admin(int id, string name) : base(id, name)
        { }
    }

and User class:

    public abstract class User
    {
        private int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
      
        public User(int id, string name)
        {
            _id = id;
            _name = name;
            // _users = new List<User>();
        }

        public User(){ }    

    }

and Program class:

    class Program
    {
        public static void Main(string[] args)
        {
            

            UserRecord userRecord = new UserRecord();
            userRecord.RegisterUser();
            userRecord.NoOfUser();
            userRecord.PrintUser();

        }
    }

I am developing it further along. So I know I have to work in while loop in the main, but I wanted to test it along the way



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source