检查异常类型而不考虑 T C#

Check exception type without considering T C#

我有错误 class:

 public class FailureException<TRequest, TResponse> : PartialFailureException<TRequest, TResponse>
    {
        public FailureException(TRequest request, TResponse response, TRequest requestToRetry)
            : base(request, response, requestToRetry) { }
    }

然后我有不同的 class 来检测错误类型:

 public static class ErrorDetector
    {
        public static bool IsFailure(Exception e) =>
            e.GetType() == typeof(FailureException<TRequest, TResponse>));
    }

是否可以在不添加 FailureException<TRequest, TResponse>(仅使用 FailureException)的情况下以某种方式检查错误类型,这样我就不需要将 添加到一堆其他 classes?

我认为您可以使用这样的开放泛型来检查类型:

e.GetType().IsGenericType && e.GetType().GetGenericTypeDefinition() == typeof(FailureException<,>)

这里我们不指定类型参数,而是检查类型是否为泛型。