Как избежать копирование кода?

Пытаюсь разобраться как избежать копирования кода.

Вот абстрактный класс 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 шт):

Автор решения: aepot

Используйте обобщение.

Я опечатки в коде поправлю, если вы не против

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>();
→ Ссылка