Tôi có thuộc tính tùy chỉnh mà tôi muốn hạn chế đối với các phương thức có loại trả về void.Tôi có thể hạn chế thuộc tính tùy chỉnh để làm trống chỉ các phương thức không?
Tôi biết tôi có thể giới hạn các phương pháp sử dụng [AttributeUsage(AttributeTargets.Method)]
nhưng dường như không có cách nào để hạn chế kiểu trả về hoặc bất kỳ khía cạnh nào khác của chữ ký phương thức.
Thuộc tính [System.Diagnostics.Conditional]
có chính xác loại giới hạn mà tôi muốn. Thêm nó vào một kết quả phương pháp phi khoảng trống trong các lỗi biên dịch:
The Conditional attribute is not valid on '(SomeMethod)' because its return type is not void
và IntelliSense nói:
Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on attribute classes or methods with 'void' return type.
Nếu tôi F12 để các ConditionalAttribute
tôi thấy rằng nó được trang trí với các thuộc tính sau:
[Serializable]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
[ComVisible(true)]
Không ai trong số đó nói bất kỳ điều gì về loại trả lại.
Làm cách nào để thực hiện thuộc tính Conditional
và tôi có thể làm tương tự cho thuộc tính tùy chỉnh của mình không?
Có thể bạn sẽ tìm thấy điều này là nhiều hơn một chức năng như thế nào * sử dụng của nó * chứ không phải là như thế nào * tuyên bố của mình *. – Jamiec
Hiện tại tôi không nghĩ rằng có thể, nguồn 'System.Diagnostics.ConditionalAttribute' không đáng kể trong hiệu ứng đó (http://www.dotnetframework.org/default.aspx/[email protected]/[email protected]/DEVDIV_TFS/Dev10/Phát hành/RTMRel/ndp/clr/src/BCL/Hệ thống/Chẩn đoán/ConditionalAttribute @ cs/1305376/ConditionalAttribute @ cs). Nó phải là một số phép thuật biên dịch. Rosalyn và C# 6 có thể thay đổi điều đó. –