Tôi muốn để người lập trình và bản thân biết rằng phương pháp không muốn null
và nếu bạn gửi null
cho dù sao thì kết quả sẽ không đẹp.C#: Cách triển khai và sử dụng thuộc tính NotNull và CanBeNull
Có một NotNullAttribute
và CanBeNullAttribute
trong Lokad Shared Libraries, trong không gian tên Lokad.Quality
.
Nhưng cách thức hoạt động? Tôi đã xem mã nguồn của hai thuộc tính đó và trông giống như sau:
[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
{
}
Hai lớp trống kế thừa từ Attribute
. Chúng được sử dụng như thế nào? Bạn có phải tìm kiếm tài liệu xml và biết rằng nó có ở đó không? Vì tôi đã cố tạo cả bản sao thuộc tính của riêng mình và sử dụng phiên bản Lokad, nhưng khi tôi cố gắng gửi một null trực tiếp vào, tôi không nhận được thông báo nào. Không phải từ ReSharper cũng như từ VS. Tôi thực sự mong đợi điều đó. Nhưng chúng được sử dụng như thế nào? Tôi có thể bằng cách nào đó làm cho VS tạo ra cảnh báo cho tôi nếu tôi cố gắng gửi một cái gì đó là null trong đó? Hoặc là nó chỉ được sử dụng trong một số loại khuôn khổ thử nghiệm? Hoặc là?
Để nhận xét về trường hợp cụ thể của bạn, những thuộc tính đó không làm bất cứ điều gì và chỉ là "tài liệu". Tuy nhiên, các câu trả lời khác cung cấp giải pháp thay thế tốt. – Sander
'Nullable' là tên tốt hơn cho' CanBeNull', chỉ cần nói :) –