Я хочу, чтобы программисты и я знали, что метод не хочет null
, и если вы все равно отправите ему null
, результат будет некрасивым.
В Общих библиотеках Lokad в пространстве имен Lokad.Quality
есть NotNullAttribute
и CanBeNullAttribute
.
Но как это работает? Я посмотрел исходный код этих двух атрибутов, и он выглядит так:
[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 генерировать для меня предупреждения, если я попытаюсь отправить туда что-то пустое? Или он просто используется в какой-то среде тестирования? Или?
Nullable
- лучшее имя дляCanBeNull
, просто говорю :) - person Ahmet Alp Balkan   schedule 28.03.2013