Я хочу, чтобы программисты и я знали, что метод не хочет null
, и если вы все равно отправляете ему null
, результат будет не очень приятным.
В пространстве имен и CanBeNullAttribute
находятся в Lokad Shared Libraries.
Но как это работает? Я посмотрел исходный код этих двух атрибутов, и он выглядит так:
[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 генерировать предупреждения для меня, если я попытаюсь отправить что-то, что там пусто? Или это просто используется в какой-то структуре тестирования? Или?