Πώς να φέρω ένα αποτέλεσμα από ένα σκανδαλισμό δράσης, προκειμένου να δώσει αντάλλαγμα στη μέθοδο που περιέχει;

ψήφοι
1

Ας πούμε ότι έχω ένα parsing βιβλιοθήκη που επιτρέπει να περάσει μια δράση για να πάρει λάθος δεδομένα (π.χ. μετά την ανάγνωση μια γραμμή).

Κάτι τέτοιο παρακάτω:

public IEnumerable<string> Parse(string fileName)
{
     // Initialize a parser reading the given fileName
     // ...
     myParser.Configuration.OnGettingDataError = (string error) => 
     {
          // Obviously we cannot yield return to the containing method above...
          yield return error;
     };
     while(myParser.Read())
     {
         yield return myParser.GetRecord();
     }
}

Πώς μπορώ να πάρετε την απόδοση σφάλμα επέστρεψε από τη μέθοδο που περιέχει; Είναι ένα είδος προτύπου που μπορώ να εφαρμόσει εδώ εκεί;

Δημοσιεύθηκε 20/10/2018 στις 12:54
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Είστε σίγουροι ότι θέλετε να αποδώσει το σφάλμα; Θα μπορούσατε όμως

  • Αποθηκεύστε το σφάλμα σε ένα ακίνητο / Κατάλογος, η απαρίθμηση αυτή μετά από κάθε GetRecord.
  • Απλά throw, φαίνεται εξαιρετικό για μένα
  • Ή τέλος καταμέτρηση και τον έλεγχο για την τελευταία σφάλμα.

Αυτά είναι φαινομενικά μόνο σας επιλογές

Εκσυγχρονίζω

Δεν είναι απόλυτα σίγουρος αν αυτό είναι ό, τι είστε μετά, όμως ...

public IEnumerable<string> Parse(string fileName)
{
   var errors = new List<string>();
   myParser.Configuration.OnGettingDataError = (string error) => errors.Add(error);

   while (myParser.Read())
   {
      yield return myParser.GetRecord();
      foreach(var error in errors)
         yield return error;
      errors.Clear();
   }
}

Σημείωση : Απόλυτα δοκιμαστεί, και λίγο ύποπτο

Απαντήθηκε 20/10/2018 στις 13:03
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more