c#表达式树(MemberExpression )成员表达式

C# 中的 Expression 类表示表达式树中的各种表达式,而 MemberExpression 类是 Expression 类的一个子类,用于表示成员访问表达式。

成员表达式用于表示访问对象的属性或字段。下面是一个简单示例,演示了如何使用 MemberExpression 类来创建一个成员访问的表达式树:

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        // 创建参数表达式
        ParameterExpression param = Expression.Parameter(typeof(Person), "person");

        // 创建成员访问表达式
        MemberExpression member = Expression.PropertyOrField(param, "Name");

        // 将表达式树编译为委托
        Func<Person, string> getName = Expression.Lambda<Func<Person, string>>(member, param).Compile();

        // 创建 Person 对象
        Person person = new Person { Name = "Alice" };

        // 执行表达式
        string name = getName(person); // 结果为 "Alice"
        Console.WriteLine(name);
    }
}

class Person
{
    public string Name { get; set; }
}

在这个示例中,我们使用 MemberExpression 类的 PropertyOrField 方法来创建一个成员访问表达式树,表示了访问 Person 对象的 Name 属性。然后,我们将这个表达式树编译为委托,并执行得到了结果。

通过使用 MemberExpression 类,我们可以灵活地表示成员访问表达式,并将其用于动态创建和执行表达式的功能。

你可能感兴趣的:(设计模式,c#)