当枚举存储到表达式中时,枚举的类型是什么



我正在得到表达式 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);

会工作。

最新更新