У меня есть следующая функция, которая принимает ошибку и создает экземпляр класса ErrorType<T>
private dynamic GenerateDynamicErrorHandler(Exception ex)
{
try
{
string typeName = ex.GetType().FullName;
Type typeArgument = Type.GetType(typeName);
Type genericClass = typeof(ErrorType<>);
Type constructedClass = genericClass.MakeGenericType(typeArgument);
dynamic created = Activator.CreateInstance(constructedClass);
return created;
}
catch
{
throw new ReflectionException(ex.GetType().FullName);
}
}
, который затем возвращает объект dynamic
в следующем фрагменте кода:
try
{
dynamic c = GenerateDynamicErrorHandler(ex);
if (c.IsError())
{
return c.GenericResponse<ErrorDetails,AppendingErrors>(isDebug,
isDefaultConverter,
context,
_errorDetailResponseFactory.CreateDefaultError(ex.Message,ex.InnerException,context.Response.StatusCode),
new AppendingErrors
{
Title = c.Get().Title,
ResultCode = c.Get().ResultCode,
StackTrace = ex.StackTrace
});
}
return HandleError.WithDefaultJsonConverter<ErrorDetails>(context,
_errorDetailResponseFactory.CreateDefaultError(ex.Message,ex.InnerException,context.Response.StatusCode));
}
catch(ReflectionException re)
{
return HandleError.WithGenericApendingJsonConverter<ErrorDetails, object>(context,
_errorDetailResponseFactory.CreateDefaultError(ex.Message, ex.InnerException, context.Response.StatusCode),
new {
reflectionError = re.Message
});
}
Это работает для всех исключений, кроме System.Fabric.FabricServiceNotFoundException
, и я не понимаю или не имею понятия, почему. Если бы кто-нибудь мог помочь с этим, был бы очень признателен