Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当存储到表达式中时,枚举的类型是什么_C#_Asp.net_Asp.net Mvc_Enums_Expression - Fatal编程技术网

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

C# 当存储到表达式中时,枚举的类型是什么,c#,asp.net,asp.net-mvc,enums,expression,C#,Asp.net,Asp.net Mvc,Enums,Expression,我得到表达式x=>x.SomeAttribute 属性可以是任何类型。 我从表达式中获取属性的类型。 对于普通的基元属性,它为我提供了正确的值,如int、string。。。等 但对于Enum,请给我MyEnum。 我想为枚举执行getExpression方法。那么,作为TResult传递什么呢 public enum TestEnum { first = 0, second = 1 } Public Class A {

我得到表达式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;
     }
public enum TestEnum
{
第一个=0,
秒=1
}
公共A类
{
公共int测试{get;set;}
公共字符串TestString{get;set;}
公共TestEnumDemo{get;set;}
}
x=>x.TestInt;
getExpression(expression)//当SomeAttribute为整数时
x=>x.TestString;
getExpression(expression)//当SomeAttribute为字符串时
x=>x.0;
getExpression(expression)//当SomeAttribute为Enum时,它将重新运行null
私有表达式getExpression(表达式)
{
var x=表达式作为表达式;
返回x;
}

int
是的基础类型

getExpression<TSource, int>(expression);
getExpression(表达式);

将起作用。

他还可以显式声明枚举类型。@eranotzap他们可以,但是,这意味着对每个枚举类型进行单独调用,我的假设是OP不想这样做。将其检索为
int
并将其强制转换为所需的
enum
类型非常简单。请发布您的枚举。@HemantMalpote type enumType=enumValue.GetType();类型underlyingType=Enum.GetUnderlyingType(enumType);因为我有表情。如何获取枚举值。我不想在这个方法中调用表达式。我假设您讨论的是属性。在C#/.NET中有一个叫做的概念,它似乎与您所问的问题无关。t成员是TResult对吗?发布如何创建表达式变量我也发布表达式请花点时间正确设置问题的格式。它会帮助别人帮助你。