C# Динамически добавлять столбцы в DataTable для каждого свойства объекта

Когда я пытаюсь использовать этот принятый ответ для динамического добавления столбцов в мою таблицу данных, if условие никогда не выполняется Я пытался изменить struct к class и я пытался с и без BindingFlags на GetProperties, Что мне не хватает?

public partial class mainForm : Form
{
    public DataTable DeviceDataTable;
    public mainForm()
    {
        InitializeComponent();
        AttachToTable(new TestObject());
    }
    public void AttachToTable(params object[] data)
    {
        for (int i = 0; i < data.Length; i++)
        {
            if (data[i].GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Length > DeviceDataTable.Columns.Count)
                foreach (PropertyInfo info in data[i].GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
                {
                    DeviceDataTable.Columns.Add(info.Name, data[i].GetType());
                }
        }
        DeviceDataTable.Rows.Add(data);
    }
    public struct TestObject
    {
        public static readonly string Porperty_One = "First property";
        public static readonly string Porperty_Two = "Second property";
        public static readonly string Porperty_Three = "Third property";
    }
}

1 ответ

Решение

Ваш образец структуры плох, потому что у него нет свойств, даже экземпляра, но только статические поля. Так Type.GetProperties не верну их. Это должно работать как задумано:

public class TestObject
{
    public string PorpertyOne   => "First property";
    public string PorpertyTwo   => "Second property";
    public string PorpertyThree => "Third property";
}
Другие вопросы по тегам