Я немного озадачен перегрузкой операторов в C # .NET
Пожалуйста, проверьте следующий пример
public enum TestActionResult
{
NoResult,
Fail,
Pass,
Exception
}
TestActionResult result = DetailsScreen.Text.Contains("YOUR DETAILS", StringComparison.OrdinalIgnoreCase) && DetailsScreen.Enabled && DetailsScreen.Displayed;
То, что я хотел бы случиться:
Я хочу автоматически преобразовать значение boolean
в TestActionResult
.
Так что, если логическое значение справа от моего объекта результата равно true, тогда я бы хотел TestActionResult
вывести Pass или Fail, если False
.
Я знаю, что вы можете выполнять перегрузку операторов в C #, и я вполне уверен, что это возможно, но я не знаю, как это будет работать.
У меня была трещина, но оказалось, что это был неправильный xD
public static TestActionResult operator == (bool b1, bool b2)
{
if(b1 && b2)
{
return TestActionResult.Pass;
}
return TestActionResult.Fail;
}
public static TestActionResult operator !=(bool b1, bool b2)
{
if(!(b1 && b2))
{
return TestActionResult.Pass;
}
return TestActionResult.Fail;
}
Любая помощь будет высоко ценится
Я знаю, что могу использовать тернарный операнд, однако для меня это часто приводит к разбуханию строк кода, и я хотел бы, чтобы это было в более гладком формате
, например
result = !bodyElement.GetAttribute("class").Contains("popup-visible") ? TestActionResult.Pass : TestActionResult.Fail;
Это слишком долго, и если бы я мог уменьшить его с перегрузкой оператора, я был бы очень признателен за ввод