Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Generics 将枚举传递给Blazor组件';s参数_Generics_Enums_Blazor_Blazor Server Side - Fatal编程技术网

Generics 将枚举传递给Blazor组件';s参数

Generics 将枚举传递给Blazor组件';s参数,generics,enums,blazor,blazor-server-side,Generics,Enums,Blazor,Blazor Server Side,我有一个Razor组件,它需要一个枚举作为参数。我已经读到您应该使用@typeparam来传递泛型类型,但是当我尝试使用变量名EnumType时,每次键入EnumType时都会出现以下错误 找不到类型或命名空间名称EnumType(是否缺少using指令或程序集引用 代码大致如下所示: @typeparam TEnum @foreach(Enum.GetValues中的EnumType标志(typeof(EnumType))) { if((枚举类型)Old.HasFlag(标志)) { if((

我有一个Razor组件,它需要一个枚举作为参数。我已经读到您应该使用
@typeparam
来传递泛型类型,但是当我尝试使用变量名
EnumType
时,每次键入
EnumType
时都会出现以下错误

找不到类型或命名空间名称
EnumType
(是否缺少using指令或程序集引用

代码大致如下所示:

@typeparam TEnum
@foreach(Enum.GetValues中的EnumType标志(typeof(EnumType)))
{
if((枚举类型)Old.HasFlag(标志))
{
if(((枚举类型)新建).HasFlag(标志))
{
  • @EnumExtensions.GetEnumDisplayName(标志)
  • } 其他的 {
  • @EnumExtensions.GetEnumDisplayName(标志)
  • } } } @代码{ [参数] 公共TEnum枚举类型{get;set;} //^唯一一次我没有得到错误 [参数] 公共int Old{get;set;} [参数] public int New{get;set;} }
    编辑:我休息了一会,回来看看我的代码,发现它毫无意义。后来我将它更新为类似:

    @typeparam TEnum
    @foreach(Enum.GetValues中的枚举标志(typeof(TEnum)))
    {
    if(((枚举)Convert.ChangeType(Old,typeof(TEnum)).HasFlag(flag))
    {
    if(((Enum)Convert.ChangeType(New,typeof(TEnum))).HasFlag(flag))
    {
    
  • @EnumExtensions.GetEnumDisplayName(标志)
  • } 其他的 {
  • @EnumExtensions.GetEnumDisplayName(标志)
  • } } } @代码{ [参数] 公共int Old{get;set;} [参数] public int New{get;set;} }
    我现在在
    ((Enum)Convert.ChangeType(Old,typeof(TEnum))
    上收到一个错误,上面说:

    从“System.Int32”到“DataAccessLibrary.Enums.TimelineinfoEnums+错误管道Enum”的强制转换无效


    您需要在生命周期
    OnInitialized(){…}
    OnInitializedAsync(){…}
    中为对象
    EnumType
    设置值


    参考文档:

    是的,如果我要正确使用该变量,我需要这样做,但因为我只需要类型,而不需要变量,我从一开始就不需要
    EnumType
    。我已经更新了问题,以更好地反映我应该做什么以及我现在面临的问题。请使用
    public部分代码尝试代码隐藏类YourComponent:ComponentBase其中TEnum:Enum
    ((TEnum)Enum.ToObject(typeof(TEnum),Old))
    谢谢Brian,
    Enum.ToObject
    起作用。我必须将其转换为
    Enum
    而不是
    TEnum
    ,因为
    TEnum
    不包含
    的定义
    使用代码隐藏方法时,它将具有枚举约束。