将Expression作为参数传递

本文关键字:参数传递 Expression | 更新日期: 2023-09-27 18:09:49

我正在尝试设计这样的东西

String name = "John";
Int32 age = 30;
var variable = SomeClass.SomeMethod(Name != "Bob", age > 50)

我希望能够做一些像

SomeClass.GetName();
SomeClass.GetAge();
SomeClass.IsAgeAboveThreshold();

我想要Name != "Bob", age > 50以这种确切的格式,有可能添加更多的参数,而不仅仅是那些2x=>

我该如何设计SomeClass ?

我确实研究了Expressions和一些Lambda的东西,但它看起来太大了,在我知道我需要它之前,我不想深入研究它。

将Expression作为参数传递

传递的参数是条件参数。它们返回布尔值。考虑到这一点,您需要相应地构建处理方法:

public static string SomeMethod(bool nameTest, bool ageTest)
{
    ...
}

下面是一个小的测试,使用以下代码演示一些基本功能:

class Program
{
    public static void Main()
    {
        String name = "John";
        int age = 30;
        var variable = SomeClass.SomeMethod(name != "bob", age > 50);
        Console.Write(variable);
        Console.ReadKey();
    }
    public class SomeClass
    {
        public static string SomeMethod(bool nameTest, bool ageTest)
        {
            return string.Format("nameTest is {0}, ageTest is {1}", nameTest.ToString(), ageTest.ToString());
        }
    }
}