Il riutilizzo del codice sulla funzione scrive gli oggetti nel file

1

Ho alcune classi di base e derivate e ho bisogno di scaricare i loro dati nel file. La differenza è solo un campo, ma non so come riutilizzare il codice della classe base. Scusa se domanda noob: p Queste classi hanno questo aspetto: (strumento C #)

    class Base{
      public int id {get;set;}
      public string field1 {get;set;}
    }
    class Child : Base{
      public int onlyOneDifferentVariable {get;set;}
    }

    class ListBase{
      public List<Base> data {get;set;}
      public void dumpToFile() {
        foreach (var item in data){

          var newLine = string.Format("{0}|{1}",item.id,id.field1);
          csv.Append(newLine);
        }
        File.WriteAllText(fileName, csv.ToString());      
      }
    }
    
posta Sanna Jo 13.08.2016 - 20:46
fonte

1 risposta

4

Puoi sovrascrivere il metodo ToString nelle tue classi Base e Child (presumo che tu sappia già che il metodo virtuale è definito nella classe object ). Ad esempio, in Base

    public override string ToString()
    {
        return string.Format("{0}|{1}",id,field1)
    }

e in Child :

    public override string ToString()
    {
        return base.ToString() + string.Format("|{0}", onlyOneDifferentVariable);
    }

Ciò rende possibile la sostituzione

    var newLine = string.Format("{0}|{1}",item.id,id.field1);

da

    var newLine = item.ToString();

Se hai bisogno del metodo ToString per altri scopi, è anche possibile definire la tua funzione virtuale nella classe Base e usarlo, invece, questo non farà alcuna differenza sostanziale.

Considerare anche di utilizzare i meccanismi di serializzazione esistenti del framework .NET, in genere non è necessario inventare il proprio meccanismo, tranne che per scopi di apprendimento o per supportare formati di file specifici.

    
risposta data 13.08.2016 - 22:29
fonte

Leggi altre domande sui tag