c# - 仅在函数中评估传递的对象
问题描述
我想将一个对象传递给 C# 函数,以便在函数中而不是之前对其进行评估。这可能吗?
背景:我想检查特定的 WindowsElement 对于 UI 测试是否可见。在评估此元素时(还)不可用时会引发异常。
当我编写一个期望此 WindowsElement 作为参数的函数时,它会在函数调用之前进行评估。但是我不能在它周围写一个 try/catch 块。
public static bool IsVisible(WindowsElement windowsElement) {
try {
return windowsElement.Displayed;
}
catch {
return false;
}
}
作为一种解决方法,我创建了一个没有输入参数并返回布尔值的func 委托。这种方法的一个缺点是检查很长,我必须再次为每个 WindowsElement 插入这个 Func 委托。
Func<bool> isElementVisible = () => {
try {
return UIControls.MyWindowsElement.Displayed;
}
catch {
return false;
}
};
有没有办法将这两种方法结合起来?
解决方案
您可以编写扩展方法来检查可见性
class Program
{
static void Main(string[] args)
{
var element = new WindowsElement(null, "test");
var isVisible = element.IsVisible();
Console.WriteLine(isVisible);
}
}
public static class WindowsElementExtensions
{
public static bool IsVisible(this WindowsElement windowsElement)
{
try
{
return windowsElement.Displayed;
}
catch
{
return false;
}
}
}
推荐阅读
- presto - 如何在 Athena 中使用日期分区创建 VIEW?
- javascript - 砌体没有排列图像
- sql - 每组递增,但根据标准重置
- arrays - 如何声明一个结构数组并稍后对其进行初始化?
- physics - 给定最大和最小距离的二元系统中分量的质量
- c# - Prism.Unity.Wpf 问题:更新后缺少 UnityServiceLocatorAdapter
- c# - 如何使功能从 asp.net core 2.2 上的路径下载文件?
- php - PHP 中用于 HTML 类的多个 if/then 参数
- python - AttributeError:“str”对象没有属性“likes”
- amazon-web-services - 带有 ECS 的 AWS API 网关