Question:
How can I set the StackTrace property of an exception in c#?Can I set a private field of an object in dot.net?
Answer:
You cannot set the property "StackTrace" of the exception class but you can set a private field called "_stackTraceString" using reflection.When you inspect the Exception class (with IlSpy an open-source .NET assembly browser and decompiler) you'll see that the StackTrace property will return the _stackTraceString if it is set.
Here is an example
string msg = "no problemo";
string stackTrace = "--- stack trace from somewhere else ---";
Exception ex = new Exception(msg);
FieldInfo fInfo = typeof(Exception).GetField("_stackTraceString", BindingFlags.Instance | BindingFlags.NonPublic);
fInfo.SetValue(ex, stackTrace);
No comments:
Post a Comment