Получение значения переменной и добавление ее в List

Мне нужно чтобы я мог в конструкторе базового класса вызвать некий метод. Он, в свою очередь, взял бы указанное в MyClass текущее значение переменной counter и добавил его в лист MyObject.Data.

Комментариями в коде я постарался описать, то что я хочу, но реализовать это мне не удалось.

public class MyObject
{
    public string Name { get; set; }
    private List<int> Data = new();
    // Здесь указать что-то вроде
    // public Action<int> GetValue;
}

public abstract class Base
{
    public MyObject Obj;

    public Base()
    {
        // Здесь указать что-то вроде
        // Obj.GetValue();
    }
}

public class MyClass : Base
{
    int counter = 50;

    public MyClass()
    {
        Obj = new()
        {
            Name = "One",
            // здесь указать что-то вроде
            // GetValue => counter
        });
    }
}

Ответы (1 шт):

Автор решения: root.glukhov

Нашел решение своего вопроса

public class MyObject
{
    public string Name { get; set; }
    public List<int> Data = new List<int>();
    public Func<int> GetValue { get; set; }

    public void AddValue(int value)
    {
        Data.Add(value);
    }
}

public abstract class Base
{
    public MyObject Obj;
    public abstract void Initialize();

    public Base()
    {
        Initialize();
        Obj.AddValue(Obj.GetValue());

        foreach(var a in Obj.Data)
        {
            Console.WriteLine(a);
        }
    }
}

public class MyClass : Base
{
    int counter = 50;

    public override void Initialize()
    {
        Obj = new MyObject
        {
            Name = "One",
            GetValue = () => counter
        };
    }
}
→ Ссылка