Атрибут стандартной сборки .NET с параметром DateTime - PullRequest
0 голосов
/ 24 мая 2018

Фон

Я пытаюсь реализовать пользовательский атрибут, который можно применить к сборке .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.Есть ли другие способы сделать это?

1 Ответ

0 голосов
/ 24 мая 2018

Нет.Там нет в данный момент.ValidationAttribute - это только «аннотация» о том, каким должен быть формат поля / свойства.Другой код C # должен активировать его.

...