gpt4 book ai didi

c# - 动态注释/属性值

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:36 29 4
gpt4 key购买 nike

我在使用 C# 中的数据注释时遇到了问题。我正在使用自定义必需属性和范围属性,我想将一个对象设置为错误消息。

[MyOwnRequired(ErrorCode=GlobalMessages.Message01]
public string Description { get; set; }

问题是我确实有一个类包含多个对象(GlobalMessages.Message01,每个对象包含一条消息和一个代码)以便在整个应用程序中转换不同的错误消息。

正如几篇文章所述,不可能使用非常量表达式作为数据注释/属性。我不能使用枚举来解决这个问题,因为我需要在不同的项目中扩展错误消息,而枚举(继承)是不允许的。我也不想将 ErrorCode 用作字符串,因为我想在每个属性(悬停)上查看消息。

有没有人有解决这个问题的好方法?

最佳答案

都是真的。你不能。尽管你写了你不能使用枚举,这实际上可以提供一个解决方案:

将枚举参数传递给您的属性在属性构造函数的逻辑/算法中使用此参数来实现您的扩展逻辑。

注意:这与某些 DP 完全相反,因此我们可以安全地将其称为反模式,但这里别无选择。

如果这是您项目中重要且冗长的部分,那么在此处使用反模式可能会降低生产力。这种情况下,您还可以使用代码生成来生成属性的一部分,并根据项目中的一些更改自动在构造函数中生成巨大的开关(及其逻辑)。这消除了反模式的大部分实际缺点。 (好吧,它仍然很难看)这个案例的推荐工具是 T4,它得到了广泛的支持。

关于c# - 动态注释/属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30890522/

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