【发布时间】:2013-11-06 18:14:11
【问题描述】:
TL;DR:我想传递一些代码,这些代码将在 try catch 中执行 伪代码:
void ExecuteInTryCatch(BlockOfCode)
{
try
{
execute BlockOfCode with possible return value
}
catch (MyException e)
{
do something
}
}
长版:我正在编写 Web 应用程序的自动化测试,并希望执行一些代码,这些代码将捕获可能由非确定性原因导致的某些异常,并在最终抛出之前重试执行该代码一段时间。例外。我已经考虑过可能为此目的使用委托,但我很困惑我将如何实现这一点,而且我从未使用过 lambda 表达式,这更加令人困惑。
目标是能够将此代码重用于各种 selenium 操作。这在 Ruby 中相当简单,但在 C# 中则不然。
【问题讨论】:
-
你试过使用委托吗?
-
把 lambda 表达式想象成 Ruby 中的一个块。 (更准确地说,它就像 Ruby 中的
Proc对象;Ruby 中的a = lambda { puts "hello world" }与 C# 中的Action a = () => { Console.WriteLine("hello world"); }大致相同。) -
有很多关于这个主题的资源;看来您甚至还没有尝试过 来解决问题。有书籍、在线教程、博客、堆栈溢出问题、课程和各种其他资源。
-
我发现这(使用函数在常见的日志记录/错误处理中包装一些 lambda)在 C# 中是一种不常见的模式。对于一个完整的 C# 新手来说,这可能并不明显——事实上,对于一些专业的 C# 开发人员来说,这并不明显...... :-\
标签: c# selenium-webdriver specflow