Добавить свойство в С#, используя цикл for

Допустим, у меня есть школьная модель.

public class School {

public string Name {get; set;} // property

}

У меня есть список массивов свойств, поступающих из базы данных

var arraylist = ["ComputerParts","CellphoneParts"]

Есть ли способ добавить новое свойство в школьную модель, используя цикл for?

это то, что я думаю

  1. для массива циклов
  2. Добавить новое свойство в школьную модель
//add this -> public string ComputerParts{get; set;} -> in school model
// add this -> public string CellphoneParts {get; set;} -> in school model 

Вот ожидаемый результат

public class School {

public string Name {get; set;} 
public string ComputerParts{get; set;}
public string CellphoneParts {get; set;}

}

c#
person dr mkc    schedule 12.10.2020    source источник
comment
вы строите генератор кода или что-то в этом роде? В противном случае я не вижу смысла в этом вопросе.   -  person ADyson    schedule 12.10.2020
comment
Похоже на проблему XY.   -  person Filburt    schedule 12.10.2020
comment
Вам нужно сказать нам, что вы хотите сделать, генератор кода или миграция базы данных?   -  person Yiao SUN    schedule 12.10.2020
comment
уверен, что есть способ - динамический или отражение + подкласс. Но это сложно и трудно поддерживать (рефлексия + способ подкласса). Вы должны избегать этого любой ценой!   -  person vasily.sib    schedule 12.10.2020
comment
у меня есть задача создания отчетов с динамическими столбцами, скажем, у меня есть 5 лучших данных, 5 лучших данных будут столбцами, и я использую sql dapper, чтобы получить данные что-то вроде этого QueryAsync‹DTO›, меня беспокоит, как бы я знаю, какие свойства или столбцы будут отображаться в DTO или модели?   -  person dr mkc    schedule 12.10.2020
comment
я думаю, что это сработает, спасибо!   -  person dr mkc    schedule 12.10.2020
comment
@drmkc, вы должны добавить эту деталь к вопросу (используя кнопку редактирования вашего вопроса), так как это очень важно для контекста того, что вы спрашиваете.   -  person ADyson    schedule 12.10.2020
comment
@vasily.sib вам, вероятно, следует сделать это ответом (с небольшим добавлением контекста)   -  person ADyson    schedule 12.10.2020


Ответы (1)


Похоже, вы ищете способ передать некоторый динамический набор пар ключ-значение по сети с помощью вашего DTO. Вместо того, чтобы динамически добавлять свойства в какой-либо класс (что на самом деле тоже возможно, но гораздо сложнее реализовать), я бы предложил вам использовать простой Dictionary<string, string> или даже Dictionary<string, object>:

public class SchoolDTO {
    public string Name { get; set; } 
    public Dictionary<string, string> ExtraColumns { get; set; }
        = new Dictionary<string, string>();
}

var schoolDTO = new SchoolDTO
{
    Name = "Sample school",
    ExtraColumns =
    {
        { "ComputerParts", "part1,part2,part3" },
        { "CellphoneParts", "part1,part2,part3" }
    }
};
person vasily.sib    schedule 12.10.2020