Jak načíst výsledek z spouštěné akci, aby se dalo vrátit ho v metodě, který obsahuje?

hlasů
1

Řekněme, že mám rozebrat knihovnu, která umožňuje předat akci na získání chyba dat (například po přečtení řádku).

Něco v tom smyslu níže:

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();
     }
}

Jak se mohu získat výnos chyby vrácený z metody obsahující? Je tu jakýsi vzor, ​​který mohu tady platí?

Položena 20/10/2018 v 12:54
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Jste si jisti, že chcete získá chybu? Dalo by se však

  • Ukládat chyby ve vlastnictví / List, výčet jej po každém GetRecord.
  • Prostě throwse zdá, že výjimečný pro mě
  • Nebo na konci výčtu a zkontrolovat poslední chyby.

Jsou to zdánlivě své jediné možnosti

Aktualizace

Ne tak docela jistý, jestli to je to, co jste po, nicméně ...

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();
   }
}

Poznámka : Zcela netestované a trochu podezřelý

Odpovězeno 20/10/2018 v 13:03
zdroj uživatelem

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