我正在得到表达式 x=>x.SomeAttribute
属性可以是任何类型。我正在从表达式中获取属性类型。对于普通的原始属性,它给了我正确的值,如 int,string...等。但是对于Enum,它给了我MyEnum。我想为枚举执行getExpression方法。那么作为TResult传递什么。
public enum TestEnum
{
first = 0,
second = 1
}
Public Class A
{
public int TestInt {get;set;}
public string TestString {get;set;}
public TestEnum EnumDemo { get; set; }
}
x=>x.TestInt;
getExpression<TSource, int>(expression)// when SomeAttribute is integer
x=>x.TestString;
getExpression<TSource, string>(expression) // when SomeAttribute is string
x=>x.EnumDemo ;
getExpression<TSource, Enum>(expression) // when SomeAttribute is Enum, It reruns null
private Expression<Func<TSource, TResult>> getExpression<TSource, TResult>(Expression expression)
{
var x = expression as Expression<Func<TSource, TMember>>;
return x;
}
int
因此是枚举的基础类型
getExpression<TSource, int>(expression);
会工作。