C# Как инициализировать массив класса obj, внутри другого класса obj? - PullRequest
0 голосов
/ 29 марта 2020

У меня есть obj trainingData типа TrainingPlanData, который мне нужно инициализировать. Одна из переменных в этом объекте - это массив другого класса TrainingPlanDataSet.

Как бы я инициализировал эту часть trainingData? (см. ниже)

Спасибо

    public class TrainingPlanData
    {
        public Int16 pool_ID = 3;
        public byte[] training_plan_name = new byte[10];
        public TrainingPlanDataSet[] training_set = new TrainingPlanDataSet[10];
    }

    public class TrainingPlanDataSet
    {
        public Int16 set_ID = 1;
        public byte[] set_name = new byte[10];
        public Int16 set_distance = 0;
    }

    public static TrainingPlanData trainingData = new TrainingPlanData
    {
        pool_length_override = 5,
        training_plan_name = new byte[10] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

        training_set = new TrainingPlanDataSet[10] {  ?????????????? }

    };

1 Ответ

0 голосов
/ 29 марта 2020

Если вам абсолютно необходимо иметь изменяемые свойства в TrainingPlanData, вы можете сделать это:

public class TrainingPlanData
{
    public Int16 PoolID => 3;
    public byte[] TrainingPlanName { get; set; }
    public TrainingPlanSet[] TrainingSet { get; set; }
}

public class TrainingPlanDataSet
{
    public Int16 SetID => 1;
    public byte[] SetName { get; set; }
    public Int16 SetDistance { get; set; } = 0;
}

public class TrainingPlanDataFactory
{
    private const c_plans = 10;

    public TrainingPlanData Create()
    {
        return new TrainingPlanData()
        {
            TrainingPlanName = new byte[c_plans] { 0x00, ..... }
            TrainingSet = CreateDataSets();
        }
    }

    private TrainingPlanDataSet[] CreateDataSets()
    {
        var arr = new TrainingPlanDataSet[c_plans]
        for(int i = 0; i < c_plans; i++)
        {
            arr[i] = new TrainingPlanDataSet();
        }

        return arr;
    }
}

, но я бы предпочел иметь конструктор и избегать установщиков свойств, если бы мог.

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