У меня есть такая структура класса C #, которую я хотел бы реорганизовать для использования лучших стандартов кодирования (используйте интерфейсы / абстрактные классы), чтобы она могла быть более удобной для обслуживания и повторного использования. Код, как он есть сейчас, не ужасен, но он не идеален.
У меня есть серия классов TableItemGroup: AccountTableItemGroup, PendingVoteTableItemGroup и RequestingVoteTableItemGroup. Каждый TableItemGrup содержит строку SectionName и список для соответствующего TableItem ... как таковой:
public class AccountTableItemGroup {
public string SectionName { get; set; }
public List<AccountTableItem> Items
{
get { return this._items; }
set { this._items = value; }
}
public List<AccountTableItem> _items = new List<AccountTableItem>();
public AccountTableItemGroup()
{
}
}
В будущем будет намного больше TableItemGroups, и если они все будут одинаковыми, за исключением части List, мне не нужно будет каждый раз копировать код и создавать новую группу и вносить это небольшое изменение. Я знаю, что должен быть лучший способ. Я хотел бы продолжать использовать дженерики List <>, чтобы мне не приходилось ничего приводить позже.
Другая часть - это TableItems. У меня есть AccountTableItem, PendingVoteTableItem и RequestingVoteTableItem. Элементы TableItem отличаются друг от друга, но каждая из них имеет три общие строки - TitleLabel, DetailLabel и ImageName. Но после этого каждый TableItem может иметь, а может и не иметь дополнительные свойства или методы вместе с ним ... как такие:
public class AccountTableItem
{
public string TitleLabel { get; set; }
public string DetailLabel { get; set; }
public string ImageName { get; set; }
public bool SwitchSetting { get; set; }
public AccountTableItem()
{
}
}
Итак, мой вопрос ко всем вам: как мне переопределить структуру моего класса, чтобы обеспечить максимально возможное повторное использование кода и использование лучших стандартов кодирования?
Я думал о том, чтобы иметь абстрактный класс TableItem или использовать интерфейс для TableItemGroup? Я знаю, что использование интерфейса или абстрактного класса лучше всего подходит для стандартов кодирования, но я не понимаю, как это сократит объем кода, который у меня будет?
Большое спасибо за любую помощь.