Фон
Я пытаюсь реализовать пользовательский атрибут, который можно применить к сборке .NET, чтобы указать дату окончания срока действия (дату, после которой разработчики не поддерживают использование предварительной версии).версия, которая была распространена для тестирования).Это должно быть написано в .NET Standard (2.0).
Я знаю, что не могу передать DateTime
в качестве параметра, поэтому я передаю строку, которая соответствует ISO8601 (ГГГГ-ММ-ДД), а затем с помощью 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.Есть ли другие способы сделать это?