我可以获得作为bool传递给函数的条件的字符串表示吗?

MGS*_*oto 1 .net c# reflection

我知道标题可能很难理解,很难想到一个合适的标题,但这是我想要做的事情的本质.

基本上我想要一个像这样的方法:

void Validate(bool validation)
{
    if (!validation)
    {
        throw new Exception();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想把它称为:

try
{
    Validate(1 > 2);
}
catch (Exception e)
{
    // This is where I would output the error to the user
}
Run Code Online (Sandbox Code Playgroud)

我希望将该1 > 2部分作为字符串获取而不将其定义为其他地方,或者将字符串评估为a bool,或使用谓词或使用外部方法.理想情况下,这将通过反射来完成.我还会就更好的方式做我想做的事情.假设bool可以是任何东西:1 > 2,"cheese" != "ham",objectA == objectB等.

小智 5

你不能.好吧,也许你碰巧可以(在Python中,人们可以一起破解这样的东西,我想,虽然它不会很漂亮,不会可靠地运行并且需要手头的源代码),但通常:

  • 您在运行时没有代码的字符串重复.
  • 在调用函数之前计算参数(表达式).
  • 评价只产生了一个单独的布尔,它不记得它来自哪里.

在你寻找一些令人讨厌的讨厌的黑客来模仿这个之前,检查在编译期间是否更容易添加字符串文字.