Mar*_*tin 7 c# enums attributes
这是我想要使用的代码:
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }
Run Code Online (Sandbox Code Playgroud)
EnumHelper看起来像:
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
public Type MyEnum { get; set; }
public EnumHelper(Type enum)
{
MyEnum = enum;
}
}
Run Code Online (Sandbox Code Playgroud)
我在EnumHelper(Days)上遇到的错误是"Enum Name此时无效".我做错了什么,还是不能做到这一点?
更多信息
我试图通过枚举(天),并随机取回其中一个值.
NEVERMIND:我这部分过于复杂.
Jon*_*eet 16
您正在尝试传递类型名称,就好像它是一个参数值.你不能这样做.但是,你可以这样做:
[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; }
Run Code Online (Sandbox Code Playgroud)
然而:
EnumType公开场; 把它变成一个财产.EnumType是真正的枚举.你不能在编译时这样做,但你可以在执行时完成它.EnumHelperAttribute(或者更具描述性的东西) - 这不会导致错误,但它更具惯用性如果您能告诉我们您想要完成的任务,我们可能会对您更有用.
TcK*_*cKs 11
Attributes中的参数只能是常量.如果要传递枚举类型,则必须仅传递类型:
[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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12163 次 |
| 最近记录: |