c# - 带有 DateTime 参数的 .NET 标准程序集属性

标签 c# .net validation custom-attributes .net-standard

背景

我正在尝试实现一个自定义属性,该属性可以应用于 .NET 程序集以指示到期日期(在此日期之后开发人员不支持使用已分发用于测试的预发行版本) )。它必须用 .NET Standard (2.0) 编写。

我知道我无法将 DateTime 作为参数传递,因此我传递了一个符合 ISO8601 的字符串。 (YYYY-MM-DD),然后使用 DateTime.Parse()转换为 DateTime

到目前为止我得到的属性如下:

[AttributeUsage(AttributeTargets.Assembly, Inherited = false, AllowMultiple = false)]
public sealed class UnstableReleaseExpiryAttribute : Attribute
{
    public UnstableReleaseExpiryAttribute(string expiryDate)
    {
        ExpiryDate = expiryDate;
    }
    public DateTime Expiry
    {
        get
        {
            if (ExpiryDate != null && DateTime.TryParse(ExpiryDate, out DateTime expiry))
                return expiry;

            return DateTime.MaxValue;
        }
    }
    public string ExpiryDate { get; }
}

这就是我打算使用它的方式:

[assembly: UnstableReleaseExpiry("2018-05-24")]

问题

有没有办法使用正则表达式来验证字符串输入,并在日期实际上不可解析时停止编译它?我环顾四周,认为继承自 ValidationAttribute将是做到这一点的方法,但它似乎在 .NET Standard 2.0 中不可用。还有其他方法可以做到这一点吗?

最佳答案

没有。目前还没有。 ValidationAttribute 只是关于字段/属性格式的“注释”。其他 C# 代码必须激活它。

关于c# - 带有 DateTime 参数的 .NET 标准程序集属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503827/

相关文章:

c# - 在实例构造函数之后调用静态构造函数?

c# - 绑定(bind) MenuItem 的 ItemsSource 和 IsChecked 以获取 WPF 中的可检查项列表

c# - WPF中是否有 "All Children loaded"事件

java - jsp servlet表单获取复选框/选择表达式语言的值

jQuery 不显眼的表单验证器在重置表单时不会隐藏错误消息

c# - 在子页面中覆盖母版页 CSS div 宽度

c# - XDocument.Validate 未捕获针对 XSD 的所有错误

c# - Office 2013 c# 加载项 - 空工作簿对象 HRESULT : 0x800A03EC error

c# - 在 While 循环的每次迭代期间读取 SQL Server Stored Proc 输出的表

javascript - 灵活而强大的表单验证解决方案