如何从具有泛型返回类型的方法中引发异常

本文关键字:方法 异常 返回类型 泛型 | 更新日期: 2023-09-27 17:57:34

在构建用于获取属性值的扩展方法时,我有以下方法签名:

public static IEnumerable<TValue> GetAttributeValues<TAttribute, TValue>(
      this Type type,
      string methodName,
      Type[] parameterTypes,
      Func<TAttribute, TValue> valueSelector,
      bool inherit = false) where TAttribute : Attribute

然而,在测试过程中,我发现在这个方法中不能有效地抛出异常。如果我抛出ArgumentException的实例,执行过程似乎会忽略它,,则异常不会出现。调用方法中的try... catch不会捕获任何内容。

如果我根据方法调用的结果调用GetType(),则类型将显示为方法的完全限定名称。

在调试时,我也无法介入该方法。

有人能解释为什么我不能用异常来停止应用程序吗?即使这个方法只抛出了一个异常?

如何从具有泛型返回类型的方法中引发异常

因为您的扩展方法正在返回一个IEnumerable<T>,所以您需要对它调用类似ToArrayFirst的东西,否则它将无法枚举。