Подтвердить что ты не робот

Динамическое добавление свойств в класс

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

   private string _itemCOde=string.Empty;
    private string  _itemName=string.Empty;

    public string ItemCode
    {
        get { return _itemCode; }
        set { _itemCode = value == null ? value : value.Trim();}
    }

    public string ItemName
    {
        get { return _itemName; }
        set { _itemName = value == null ? value : value.Trim();}
    }

В соответствии с этими свойствами я создаю объекты Item после выбора данных из таблицы sql.

Теперь, если таблица базы данных изменилась и добавит новый столбец с именем cost, тогда мне нужно добавить другое свойство в класс. Без добавления новых свойств в класс существует ли какой-либо способ динамически объявлять свойства в соответствии с полями таблицы.

4b9b3361

Ответ 1

Вы можете использовать ExpandoObject:

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

dynamic expando = new ExpandoObject();
expando.Cost= 42.0;
expando.ItemName = "Shoes";

Ответ 2

Возможно, вам нужен словарь.

Ответ 3

Если вам нужно сохранить атрибуты класса в синхронизации с схемой таблицы SQL... Что вам нужно, LINQ to SQL

Ответ 5

Если новые столбцы добавляются в базы данных, вам нужно изменить свой код, чтобы указать, как следует использовать новые столбцы.

Если вам нужно просто показать содержимое таблицы, несмотря на поле в таблице, вы можете использовать класс DataTable.

Ответ 6

Вы можете динамически связывать имена и значения друг с другом с помощью Dictionary<TKey,TValue>. Вы можете комбинировать это с собственной оболочкой с помощью индексатора:

public string this[this key]
{
    get { return dictionary[key]; }
    set { dictionary[key] = value == null ? null : value.Trim(); }
}

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