gpt4 book ai didi

C# CodeDOM CustomAttribute 中的枚举值

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:20 24 4
gpt4 key购买 nike

我正在尝试创建一个具有如下所示的自定义属性的类:

public class Head : Attribute 
{
public Head(Permissions permission, int id)
{
Permission = permission;
Id = id;
}

public int Id { get; private set; }
public Permissions Permission { get; private set; }
}

其中 Permissions 是一个枚举:

public enum Permissions { R, W, D, RW, RWD }

所以当我生成属性时:

var head = new CodeAttributeDeclaration
{
Name = "Head",
Arguments =
{
new CodeAttributeArgument
{
Value = new CodePrimitiveExpression(Permissions.RWD)
},
new CodeAttributeArgument
{
Value = new CodePrimitiveExpression(idValue);
}
}
}

当我尝试生成它时,我得到 ArgumentException 和使用 CodeObjectCreateExpression 的提示,但由于属性只能采用常量值,我想知道如何实现这一点?

最佳答案

尝试编写您想要生成的代码:

[Head(Permissions.RWD, 42)]

如果你这样做,你会意识到枚举没有“原始表达式”,你需要像访问静态字段一样编写它:

new CodeFieldReferenceExpression(
new CodeTypeReferenceExpression(typeof(Permissions)), "RWD")

关于C# CodeDOM CustomAttribute 中的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28936837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com