c# - 如何存储表达式> 在班级领域?
问题描述
我想在类字段中存储一个表达式以供以后使用。
这是我正在尝试做的事情:
public class MyClass
{
private Expression<Func<Type, object>> _expression;
public void SetExpression<T>(Expression<Func<T, object>> expression)
{
_expression = expression;
}
}
解决方案
正如您正在使用的@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>();
这将使 成为_expression
type Expression<Func<String, object>>
。
如果在对象上创建时无法设置T
为特定类型,则需要将表达式直接传递到要在其中使用它的方法中,或者为存储的表达式设置固定类型。
推荐阅读
- abap - 为什么左外连接像 ABAP CDS 视图和自定义表上的内连接一样工作?
- ios - 如何在iOS swift中实现带有月份、日期和时间的自定义选择器?
- c++ - 字符串作为容器的成员,容器是 C++ 类的成员
- javascript - 按名称对对象数组进行排序
- python - 如何返回字典中可用的行数
- html - 当我将鼠标移到另一个内容上时,如何抓取弹出的内容?
- mule - Anypoint Studio -- 如何检查流的调用层次结构
- networking - docker-compose 关于 cloudbuild / 网络问题
- c# - C# 中 HashSet 的 contains 方法与 where 子句的性能
- javascript - 更改日期选择器中的格式(播出日期选择器)