c# - c# 使用资源文件缩短数据注释
问题描述
我有所有这些模型,它们使用数据注释来验证并向我的 API/接口显示漂亮的消息
例如:
public class ConversionViewModel
{
public int Id { get; set; }
[Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(100, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Name { get; set; }
[Range(1, int.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Resources))] public int FeedId { get; set; }
[Range(1, int.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Resources))] public int FieldId { get; set; }
public Operator Operator { get; set; }
[Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(100, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Expression { get; set; }
}
现在那里发生了太多事情。如果我能把注释缩短一点,我会很高兴。我在整个项目中的所有注释看起来都和这里的一模一样。有没有办法缩短它们(并且仍然使用我的资源文件),所以它看起来像这样:
public class ConversionViewModel
{
public int Id { get; set; }
[Required, StringLength(100)] public string Name { get; set; }
[Range(1, int.MaxValue)] public int FeedId { get; set; }
[Range(1, int.MaxValue)] public int FieldId { get; set; }
public Operator Operator { get; set; }
[Required, StringLength(100)] public string Expression { get; set; }
}
也许我可以编写一个始终使用我的资源文件的自定义属性?
解决方案
可能是OT但是...
可能格式化代码会达到类似的结果,我个人更喜欢它自己的行上的每个属性,我发现它更容易阅读。
public class ConversionViewModel
{
public int Id { get; set; }
[Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources))]
[StringLength(100, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))]
public string Name { get; set; }
[Range(1, int.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Resources))]
public int FeedId { get; set; }
[Range(1, int.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Resources))]
public int FieldId { get; set; }
public Operator Operator { get; set; }
[Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources))]
[StringLength(100, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))]
public string Expression { get; set; }
}
推荐阅读
- ios - 我遇到了 TAP 付款的问题
- javascript - 从反应原生底部选项卡导航器的标题导航
- c++ - 为什么这个分配给 std::vector 索引会失败?
- c++ - 在 push_back 中调用 copy_backward 会发生什么?
- python - 陈旧;要么元素不再附加到 DOM,它不在当前框架上下文中,要么文档已被刷新
- java - java.lang.IllegalStateException 与 mediaPlayer
- c - RegGetValue(),标头
不在c中工作 - javascript - 为什么“else if”在 console.log 中不起作用并不断弹出语法错误?
- linux - ASP.NET Core 3:无法在 Linux 上运行
- javascript - 如何使用 webpack 复制下一个 js“公共”文件夹行为?