Ho un piccolo problema con Visual Studio. Ho un metodo che genera un CustomExceptionLa finestra Visualizza dettagli non si espande Proprietà collezione
Se mi avvolgo il codice che chiama questo metodo in un try/catch posso vedere i dettagli di eccezione nel debugger
se mi tolgo la prova/catch posso vedere che la proprietà "errori" ha Count = 4, ma non riesco a vedere gli errori ...
è questo il previsto o è un bug?
Sto usando enterprise vs2015 e .NET 4.5.2
Si può facilmente riprodurre:
1) Creare una libreria di classi con questo
using System;
using System.Collections.Generic;
using System.Linq;
namespace ClassLibrary1
{
public static class Class1
{
public static void DoSomethingThatThrowsException()
{
throw new MyException(Enumerable.Range(1, 4).Select(e => new MyError() { Message = "error " + e.ToString() }).ToList());
}
}
public class MyException : Exception
{
public IEnumerable<MyError> errors { get; set; }
public MyException(IEnumerable<MyError> theErrors) { errors = theErrors; }
}
public class MyError { public string Message { get; set; } }
}
2) Creare una console app con questo:
using ClassLibrary1;
namespace ConsoleApplicationException
{
class Program
{
static void Main(string[] args)
{
try
{
Class1.DoSomethingThatThrowsException();
}
catch (MyException ex)
{
//Here I can expand ex.errors;
}
//Here I can see that Count=4 but I cannot see the errors...
Class1.DoSomethingThatThrowsException();
}
}
}
PS
posso risolvere il mio problema con l'attributo "DebuggerDisplay", sto solo chiedendo perché Visual Studio non funziona come si aspettano Ed
[DebuggerDisplay("FullDetails = {FullDetails}")]
public class MyException : Exception
{
public IEnumerable<MyError> errors { get; set; }
public MyException(IEnumerable<MyError> theErrors) { errors = theErrors; }
public string FullDetails { get { return string.Join(",", errors.Select(e => e.Message)); } }
}
Aggiornamento
Se cambio il mio elenco di Array, ho lo stesso problema, ma se lo cambio al dizionario posso vedere il primo record !!!
Forse la classe 'MyError' non è (contrassegnato come) serializzabile? –
@UweKeim Ho lo stesso problema anche se lo contrassegno come serializzabile –