Posso usare DI su un metodo invece di un costruttore

1

Ho ricevuto una classe "WorkOrderTaskCreator" che crea oggetti del tipo Task e li aggiunge a una terza classe chiamata WorkOrder. Va così

class WorkOrderTaskCreator
{
    ParentWorkOrder ParentWorkOrder { get; private set; }
    public WorkOrderTaskCreator(ParentWorkOrder parentWorkOrder)
    {
        this.ParentWorkOrder = parentWorkOrder;
    }

    public void CreateTaskAndAssignItToWorkOrder(TaskCreator taskCreator)
    {
        var task = taskCreator.CreateTaskInOrder(ParentWorkOrder);
        AddTaskToWorkOrder(task);
    }

    private void AddTaskToWorkOrder(W6Object task)
    {
        //DoSomeTuff
    }
}

TaskCreator è un'interfaccia che espone solo il metodo CreateTaskInOrder, sono stato tentato di sostituire l'interfaccia con un delegato. Ma ho diverse classi che implementano una logica molto diversa all'interno di CreateTaskInOrder.

Passare un'interfaccia sul metodo è una buona idea o dovrei riconsiderare il mio design?

    
posta Zalomon 31.05.2017 - 16:14
fonte

1 risposta

4

È un approccio perfettamente valido per passare un'interfaccia a un metodo. In effetti, vedo questo come un segno distintivo del buon design.

L'unica cosa che sembra potenzialmente degna di essere rivisitata è il fatto che passi il creatore dell'attività al figlio che passa il genitore al creatore dell'attività. Potresti voler semplicemente passare il creatore dell'attività al genitore e farlo creare l'attività. Potresti quindi essere in grado di rimuovere la necessità di passare il genitore al creatore dell'attività. Difficile da dire senza ulteriori informazioni sul design più grande, però.

    
risposta data 31.05.2017 - 16:37
fonte

Leggi altre domande sui tag