static class MyClass
{
static void Main()
{
bool b1 = false;
if ( b1 )
{
throw new MyException(GetText(b1));
}
}
public static string GetText(bool bFlag)
{
if ( bFlag==false )
{
throw new Exception("'GetText' method should not be called when condition is 'false');
}
return "Some error text";
}
}
在上面的示例中,一切正常(我的意思是当条件b1为'True'时,'MyException'将使用正确的文本生成。如果条件为'False'则不会发生任何事情
我想为我的异常类提供一些帮助方法:
class MyException : Exception
{
public void FailIfTrue(bool bCondition, string strErrorMessage)
{
if ( bCondition )
{
throw new Exception(strErrorMessage);
}
}
}
在这种情况下,“Main”方法将更改为另一个方法:
static class MyClass
{
static void Main()
{
bool b1 = false;
MyException.FailIfTrue(
b1,
GetText(b1)
);
}
}
在这种情况下,'GetText'方法将被调用...
问题:
你是否看到任何好的解决方法或解决方案来创建一个只有在'FailIfTrue'函数内需要结果时才会调用'GetText'的帮助器?
欢迎任何想法。
谢谢。
答案 0 :(得分:2)
实际上,我看到了一种解决方法(不是传递字符串参数,而是传递Func):
public void FailIfTrue(bool bCondition, Func<string> funcErrorMessage)
{
if ( bCondition )
{
throw new Exception(funcErrorMessage());
}
}
但不确定这是否是最好的。
请指教!