Hat jemand Tipps zum Debuggen von Ausnahmen in einem C# -Objektinitialisierungsblock? Die Objektinitialisierersyntax ist im Grunde alles oder nichts, was es besonders schwierig machen kann, Fehler in einer LINQ-Abfrage zu beheben. Kann ich die Objekterstellung nicht in eine separate Methode zerlegen? Kann ich etwas tun, um zu sehen, welcher Property-Setter eine Ausnahme auslöst?Debugging eines C# -Objektinitialisierers
Antwort
Wenn Sie die Option zum Überspringen von Eigenschaften-Setter deaktivieren [Eigenschaften und Operatoren überspringen (nur verwaltete)], können Sie die Eigenschaften-Setter aufrufen.
Andernfalls ist es oft die beste Option, es einfach zu lösen und außerhalb der LINQ-Anweisung zu debuggen. Sie können Ihre Initialisierungsparameter in einen anonymen Typ in linq einschließen und Ihr Objekt außerhalb Ihrer linq-Anweisung für Debugging-Zwecke konstruieren.
Brechen Sie es aus dem Objektinitialisiererblock, wo Sie jede Eigenschaft einzeln festlegen. Auf diese Weise können Sie tatsächlich in den Code einsteigen.
Haben Sie VS eingerichtet, um zu brechen, wenn eine Ausnahme ausgelöst wird? (Der Standard besteht darin, nur bei nicht behandelten Ausnahmen zu brechen). Debuggen | Ausnahmen, und prüfen Sie "geworfen".
Das allein ist wahrscheinlich keine Antwort auf Ihre Frage, aber es könnte beim Debuggen helfen.
Darüber hinaus können Sie Ihren Code vorübergehend aus dem Initialisiererblock (nur zum Debuggen) brechen, und wenn Sie möchten, können Sie den Initialisierungsblock wieder aktivieren, sobald Sie den Code arbeiten.
- 1. Debugging eines MySqlDataReader-Fehlers in C#
- 2. Eclipse C++ - Debugging: siehe Inhalt eines Array
- 3. Debugging eines benutzerdefinierten Widgets
- 4. Debugging eines Watchdog-Timeouts
- 5. Debugging eines rekursiven Algorithmus
- 6. Debugging eines MySQL-Zeichensatzfehlers
- 7. Debugging C# Threads
- 8. Xcode C++ - Debugging
- 9. Debugging-Hilfe: C++ Fehler
- 10. Debugging des C++ Präprozessors
- 11. Debugging eines Python/NumPy Speicherlecks
- 12. Debugging eines benutzerdefinierten Django-Verwaltungsbefehls
- 13. Debugging eines Browser Redirect Loop
- 14. Live-Debugging eines Stack-Überlaufs
- 15. Debugging eines laufenden Python-Prozesses
- 16. Debugging eines Flash-Stack-Überlaufs
- 17. Debugging eines NoDiskConflict in kubernetes
- 18. Debugging eines Makefiles Schritt für Schritt
- 19. Debugging eines Dämons, der unerwartet beendet
- 20. riesige C-Datei Debugging-Problem
- 21. C# Debugging: [DebuggerDisplay] oder ToString()?
- 22. Debugging-Ereignis in C stoppen #
- 23. Debugging mit Zeigern in C#
- 24. VB.NET Debugging machen wie C#
- 25. Bestes Debugging-Tool für C und C++
- 26. Debugging eines einfachen Programms in Erlang
- 27. Was sind einige Objective-c Debugging-Tipps?
- 28. Debugging eines Jax-WS-Clients in Eclipse
- 29. Debugging eines Python Prime Number Programms
- 30. Debugging eines Deadlocks mit Windbg's! Clrstack Befehl
Können Sie erklären, was Sie meinen, indem Sie Ihre Initialisierungsparameter in einen anonymen Typ umbrechen? Würde ich den anonymen Typ irgendwie an den Konstruktor übergeben oder einfach eine Utility-Factory-Methode erstellen, die die Eigenschaften zuweisen würde? – technomalogical
Im Moment verwenden Sie Ihre Abfrageergebnisse aus den Geräuschen, um Ihre Objekte zu konstruieren, und Sie glauben, dass dies einen Fehler verursacht (bei der Objektkonstruktion). Geben Sie stattdessen einfach die Abfrageergebnisse zurück und erstellen Sie anschließend Ihre Objekte in einem separaten Schritt (mithilfe der Ergebnisse), sodass Sie die Objektinitialisierungsblöcke vermeiden können. –
Aber ist es irgendwie möglich, einen anonymen Typ an einen Konstruktor zu übergeben? – wcm