我目前正在使用 C# 处理 ASP.NET MVC 4 项目。
我想创建一个扩展方法,它接受各种类型的方法,将这些方法包装在 atry/catch
中,然后如果调用成功则返回方法调用的结果。
这是我到目前为止所拥有的:
public static object HandleServerError(this object obj)
{
object result = null;
try
{
result = obj;
}
catch (Exception ex)
{
ErrorHandlers.ThrowServerErrorException(ex);
}
return result;
}
下面是一个正在使用的扩展方法的例子:
var test = webClient.DownloadString(uri).HandleServerError().ToString();
这工作正常,但该webClient.DownloadString(uri)
部分被执行,然后作为一个字符串传入HandleServerError
,这不是我想要的。
我想要做的是webClient.DownloadString(uri)
注入扩展方法,以便将实际的方法调用包装到 try/catch 中。
请注意
我意识到有反对 try/catch 语句的论点,但不打算就这个主题展开辩论——这个问题的核心集中在依赖注入问题上。感谢所有的答案!