Я хочу сообщить программистам и самому себе, что метод не хочет null
, и если вы все равно отправите ему null
, результат не будет красивым.
Существует NotNullAttribute
и CanBeNullAttribute
в общих библиотеках Lokad , в пространстве имен Lokad.Quality
.
Но как это работает? Я посмотрел на исходный код этих двух атрибутов, и он выглядит так:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter |
AttributeTargets.Property | AttributeTargets.Delegate |
AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
[NoCodeCoverage]
public sealed class NotNullAttribute : Attribute
{
}
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter |
AttributeTargets.Property | AttributeTargets.Delegate |
AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
[NoCodeCoverage]
public sealed class CanBeNullAttribute : Attribute
{
}
Два пустых класса, наследуемых от Attribute
. Как они используются? Нужно ли искать XML-документацию и знать, что она там есть? Потому что я пытался сделать свою собственную копию атрибута и использовать версию Lokad, но когда я попытался отправить ноль напрямую, я не получил никакого сообщения. Ни от ReSharper, ни от VS. Что я вроде ожидал на самом деле. Но как они используются? Могу ли я как-то заставить VS генерировать для меня предупреждения, если я попытаюсь отправить туда что-то, что является нулевым? Или это просто используется в какой-то среде тестирования? Или