下面是我想使用的代码:
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }EnumHelper看起来像:
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
public Type MyEnum { get; set; }
public EnumHelper(Type enum)
{
MyEnum = enum;
}
}我在EnumHelper(Days)上遇到的错误是"Enum在此时无效“。我是做错了什么事,还是不能这样做?
更多信息
我试图传递Enum (天),并随机返回其中一个值。
发布于 2009-09-15 18:18:39
属性中的参数只能是常量。如果要传递枚举类型,则必须只传递类型:
[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;
}
}发布于 2009-09-15 18:19:05
您试图传递一个类型名称,就好像它是一个参数值一样。你不能这么做。但是,您可以:
[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.
EnumType实际上是一个枚举。您不能在编译时这样做,但是您可以在执行时这样做。为了约定,它应该被称为idiomatic如果你能让我们知道你想要完成什么,我们可能会对你更有用。
发布于 2009-09-15 18:17:59
参数应该是枚举值,而不是枚举类型,如下所示:
[EnumHelper(Days.Sat)]https://stackoverflow.com/questions/1428821
复制相似问题