首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Enum作为属性参数

使用Enum作为属性参数
EN

Stack Overflow用户
提问于 2009-09-15 18:15:50
回答 4查看 16.5K关注 0票数 11

下面是我想使用的代码:

代码语言:javascript
复制
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };

[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }

EnumHelper看起来像:

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
    public Type MyEnum { get; set; }
    public EnumHelper(Type enum)
    {
        MyEnum = enum;
    }
}

我在EnumHelper(Days)上遇到的错误是"Enum在此时无效“。我是做错了什么事,还是不能这样做?

更多信息

我试图传递Enum (天),并随机返回其中一个值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-15 18:18:39

属性中的参数只能是常量。如果要传递枚举类型,则必须只传递类型:

代码语言:javascript
复制
[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }


[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
    public Type MyEnum;
    public EnumHelper(Type enum)
    {
        MyEnum = enum;
    }
}
票数 12
EN

Stack Overflow用户

发布于 2009-09-15 18:19:05

您试图传递一个类型名称,就好像它是一个参数值一样。你不能这么做。但是,您可以:

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
    public Type EnumType;
    public EnumHelper(Type enumType)
    {
        EnumType = enumType;
    }
}

...

[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }

然而:

我个人不会让property.

  • There's成为一个公共领域;使它成为一个,目前还没有验证EnumType实际上是一个枚举。您不能在编译时这样做,但是您可以在执行时这样做。为了约定,它应该被称为idiomatic
  • I'm (或者更具有描述性的东西,真的)--这并不会导致错误,但更多的是
  • 不太确定我是否看到了它的好处.您已经可以从元数据中找到属性的类型;您认为该属性实际上为您购买了什么?

如果你能让我们知道你想要完成什么,我们可能会对你更有用。

票数 17
EN

Stack Overflow用户

发布于 2009-09-15 18:17:59

参数应该是枚举值,而不是枚举类型,如下所示:

代码语言:javascript
复制
[EnumHelper(Days.Sat)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1428821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档