> 在班级领域?,c#,linq-expressions"/>

首页 > 解决方案 > 如何存储表达式> 在班级领域?

问题描述

我想在类字段中存储一个表达式以供以后使用。

这是我正在尝试做的事情:

public class MyClass
{
    private Expression<Func<Type, object>> _expression;

    public void SetExpression<T>(Expression<Func<T, object>> expression)
    {
        _expression = expression;
    }
}

标签: c#linq-expressions

解决方案


正如您正在使用的@canton7 对原始问题的评论中所述<T>Type但它们不是一回事。

一个可能的解决方案是:

public class MyClass<T>
{
    private Expression<Func<T, object>> _expression;

    public void SetExpression<T>(Expression<Func<T, object>> expression)
    {
        _expression = expression;
    }
}

使用这种方法,您需要使用以下方法创建类

new MyClass<String>();

这将使 成为_expressiontype Expression<Func<String, object>>

如果在对象上创建时无法设置T为特定类型,则需要将表达式直接传递到要在其中使用它的方法中,或者为存储的表达式设置固定类型。


推荐阅读