Attualmente sto lavorando a un progetto in cui sto ricevendo un oggetto tramite il servizio web (WSDL).
Il processo generale è il seguente:
Ricevi oggetto - > aggiungi / elimina / aggiorna parti (o tutte) di esso - > e restituire l'oggetto con le modifiche apportate.
Il fatto è che a volte questi cambiamenti sono complicati e c'è qualche logica in gioco, altri database, altri servizi web, ecc. così per facilitare questo sto creando un oggetto personalizzato che riproduce quello originale ma ha alcune funzionalità avanzate per rendere le cose più facili.
Quindi sto provando ad avere questo processo:
Ricevi oggetto originale - > convertilo / copialo in oggetto personalizzato - > aggiungi / elimina / aggiorna - > converti / copialo nuovamente all'oggetto originale - > restituisce l'oggetto originale.
Esempio:
public class Row
{
    public List<Field> Fields { get; set; }
    public string RowId { get; set; }
    public Row()
    {
        this.Fields = new List<Field>();
    }
}
public class Field
{
    public string Number { get; set; }
    public string Value { get; set; }
}
 Quindi, ad esempio, una delle "azioni" da eseguire su questo sarebbe trovare tutto   Fields    in un   Row    che corrisponda a   Value    uguale a qualcosa e aggiornarle con qualche altro valore. 
 Ho una classe   CustomRow    che rappresenta la classe   Row   , come posso rendere questa unità di classe controllabile? Devo creare un'interfaccia   ICustomRow    per deriderla nel test dell'unità?
Se una delle azioni consiste nel sommare tutto il   Values    nel   Fields    che ha un   Number    uguale a   10   , come questa funzione, come può progettare la classe personalizzata per facilitare i test unitari. 
Funzione di esempio:
public int Sum(FieldNumber number)
{
    return row.Fields.Where(x => x.FieldNumber.Equals(number)).Sum(x => x.FieldValue);
}
Mi sto avvicinando a questo nel modo sbagliato?