Classe refactor (metodi di estrazione) in una classe main / helper

3

In parole semplici, una delle mie classi c # è diventata troppo grande e sto dividendo questa classe in diverse sottoclassi raggruppando metodi semanticamente correlati (in realtà azioni che generano effetti collaterali).

Quindi, per darti un esempio:

class ViewModel
{
  // a lot of properties bound to view (MVVM pattern)
  public Property 1 //bound to view
  public Property 2 //bound to view

  // a lot of actions, containing the controller logic of the view
  //Function 1 changes Property 1 -> shall be moved to class MyViewModelHelper
  Function1() {}

Cioè, quando creo una classe helper per viewModel, ha bisogno di ricevere il riferimento di istanza del modello di vista principale nel suo costruttore, in modo che abbia accesso alle proprietà pubbliche.

Non voglio che la vista debba avere la conoscenza delle classi di helper, cioè il modello di vista principale deve fornire tutte le proprietà ... ma le funzioni delegheranno il lavoro alle classi helper per mantenere la classe viewModel mantenibile.

    
posta Marco 17.07.2012 - 14:40
fonte

1 risposta

1

Sembra un caso per l'utilizzo dei metodi di estensione . Basta spostare Function1() in MyViewModelHelper , renderlo statico e cambiare il parametro first / only in modo che sia così:

public static class MyViewModelHelper
{
    public static void Function1(this ViewModel vm)
    {
        // whatever
    }
}

Come vantaggio: in seguito, la semantica dei chiamanti spesso non ha bisogno di cambiare.

    
risposta data 17.07.2012 - 15:31
fonte

Leggi altre domande sui tag