Как избежать копирование кода?
Пытаюсь разобраться как избежать копирования кода.
Вот абстрактный класс Kontroller мог бы иметь List spisokKontoliruemih
С которым работали бы наследники.
И вот что то не соображу...
KontrollerGruzchikov должен работать с List из объектов Gruzchik
KontrollerKomplectovshikov должен работать с List из объектов Komplectovshik
И в итоге, получается, что приходится копировать однотипные методы, потому что у одного List из одних объектов, у другого из других.
Если кто то меня смог правильно понять, как такое положение вещей исправить ?
Контроллер грузчиков:
internal sealed class KontrollerGruzchikov : Kontroller
{
private List<Gruzchik> spisokGruzchikov;
// Куча ещё всего
private void Kontrol()
{
foreach (Gruzchik gruzchik in spisokGruzchikov)
{
// Какой то код
}
}
}
Контроллер комплектовщиков:
internal sealed class KontrollerKomplectovshikov : Kontroller
{
private List<Komplectovshik> spisokKomplektovshikov;
// Куча ещё всего
private void Kontrol()
{
foreach (Komplectovshik komplectovshik in spisokKomplektovshikov)
{
// Какой то код
}
}
}
Ответы (1 шт):
Используйте обобщение.
Я опечатки в коде поправлю, если вы не против
internal sealed class GenericController<T> : Controller
{
private List<T> items;
private void Control()
{
foreach (T item in items)
{
}
}
}
Использовать можно будет с любым типом
var controllerGruzchikov = new GenericController<Gruzchik>();
var controllerKomplectovshikov = new GenericController<Komplectovshik>();
