尝试使用LINQ表达式创建“Fluent”类型类

时间:2011-07-20 21:19:11

标签: c# .net linq

我想在C#中使用lambdas和LINQ表达式执行以下操作。

public class Foo
{
    private SomeEntity entity;
    public Foo(SomeEntity entity)
    {
        this.entity = entity;
        Bar(p => p.FirstName);
        Bar(p => p.SurName);
    }

    public void Bar(Expression> barExpression)
    {
        // What to do here?
    }
}

每次我调用Bar()时,我都想深入了解Expression,并找出我所指的属性(例如FirstName或LastName),以及我当前使用的SomeEntity对象。我还需要属性的值(这实际上是最重要的)。

最终我想扩展Bar做更多的事情,但这很简单,我可以“煮”我的实验。

谢谢!

1 个答案:

答案 0 :(得分:4)

public void Bar<T>(Expression<Func<SomeEntity, T>> expression)
{
    string name = ((MemberExpression)expression.Body).Member.Name;
}

应该得到名字; p => p.FirstName中没有实例;但是this.entity应该给你你想要的东西。值为T value = expression.Compile()(entity)