Hallo zusammen,
ich habe einen Fall, bei dem ich den HResult Wert aus einer System.Exception auslesen muss. Leider ist diese Property (get private).
Kennt jemand einen guten Weg an den HResult Wert zu kommen?
Vermutlich bist du auf eine Frameworkversion < 4.5 (ab da ist der HResult-Getter public) beschränkt?
Falls dem so ist - Reflection und https://msdn.microsoft.com/en-us/library/6kec8wwk.aspx
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Vielen Dank schon mal für die Auskunft. Das ist ja hoch interessant.
Ja genau, ich bin auf VS2010 beschränkt. Das bietet mir nur .NET 4.0
Mit dem Link komme ich nicht klar. Mit Type.GetType() bekomme ich die Properties der System.Exception Klasse. Die kann ich aber auch im Object-Browser nachlesen. Was ich brauche ist der Int32 Wert des HResults. Wie ich da ran komme ist mir immer noch total unklar.
Kann mir vielleicht jemand einen Code-Schnippsel schicken?
Ich hab mich schon wund-gegoogelt, ich find einfach nix zu dem Thema. Vielleicht suche ich mit den falschen Begriffen...
Puh, jetzt hab ich endlich was gefunden.
int HResult = Marshal.GetHRForException(ex);
Jetzt weiß ich nur nicht, ob ich das in einem Try Catch abfragen muss. Gibt es vielleicht irgendwelche Exceptions ohne HRESULT?
Bei Type.GetProperties (bzw. GetProperty etc.) kannst du als Parameter BindingFlags.NonPublic angeben:
Exception e;
var prop = e.GetType().GetProperty("HResult", BindingFlags.NonPublic | BindingFlags.Instance);
int hresult = (int)prop.GetValue();