在构建用于获取属性值的扩展方法时,我有以下方法签名:
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()
,则类型将显示为方法的完全限定名称。
我也无法在调试时进入该方法。
任何人都可以解释为什么我无法使用异常停止应用程序,即使所有这些方法都抛出异常?
答案 0 :(得分:2)
由于您的扩展方法返回IEnumerable<T>
,因此您需要在其上调用类似ToArray
或First
的内容,否则无法枚举。