我遇到与Recreate an exception that is serialized in a JSON response完全相同的问题,但我设法实例化了正确的异常类型:
public class ServiceExceptionData
{
public string Type { get; set; }
public string Message { get; set; }
public string ErrorCode { get; set; }
public string StackTrace { get; set; }
}
...
private static void handleServiceException(ServiceExceptionData serviceException)
{
// get exception type
Type t = Type.GetType(serviceException.Type);
// create exception instance
var exceptionInstance = Activator.CreateInstance(t);
// set exception read-only properties: Message, StackTrace
???
我尝试了很多东西来设置这些属性,以下是其中一些:
但它不起作用。
Exception的属性定义为:
public virtual string Message { get; }
public virtual string StackTrace { get; }
有没有办法在我有异常实例后设置它们(例如通过获取属性的字段并使用SetValueDirect
),或者我应该放弃并创建派生类并覆盖属性以使它们公开设置器?