很难找到我想做的事,this post是我能找到的最接近的。 This post不起作用,因为我不知道枚举的整数值,我只知道它的名称。给出以下代码:
public enum Foo
{
Row = 0,
Column = 20, // This is why the second post won't work, I only know the name "Column"
None = 30
}
public static class ExpressionGetter
{
public static Expression GetExpression(Type type, string name)
{
// Not sure what I should do here. I want an expression object for Foo.Row
}
}
void Main()
{
var expression = ExpressGetter.GetExpression(typeof(Foo), "Row");
}
[稍后在我的应用程序中,我正在构建表达式树以生成LINQ查询,并且我知道enum
的类型和enum
的名称,现在我想为其创建一个Expression.Constant
或是否有其他方法为此,我想知道如何。
我最后想要一个看起来像这样的表达式:
Foo.Row
我尝试过:
Expression.Property(null, enumType, name)
但是它不起作用。结果在
ArgumentException:未为类型'Foo'定义属性'Row'参数名称:propertyName
这很有意义,因为它是结构而不是对象。
因此,在枚举类型为Foo.Row
且名称为字符串的情况下,我不确定如何构建表达式Foo
。>>
很难找到我想做的事情,这篇帖子是我能找到的最近的帖子。由于我不知道枚举的整数值,我只知道它的名字,所以这篇文章将不起作用。给定...
枚举值是枚举类型的静态字段。如果只将枚举值的名称作为字符串,则第二个版本就是您要查找的版本。但是您也可以使用第一个版本执行Enum.Parse()。
或多或少像这样: