Visual Studio 2008 có thể được định cấu hình để cảnh báo cho tôi khi tôi quên bỏ một đối tượng triển khai IDisposable không?Visual Studio có thể cảnh báo tôi khi tôi quên bỏ một đối tượng IDisposable không?
Trả lời
Visual Studio, tự nó không có tính năng này, nhưng với CodeRush bạn có thể có những cảnh báo thời gian thiết kế và tái cấu trúc để chèn sử dụng các khối khi cần thiết.
Tôi không nghĩ rằng nó có thể được thực hiện tại thời gian biên dịch. Tuy nhiên,
tuy nhiên, nó có thể được thực hiện khi chạy.
Tôi đã tạo một lớp trừu tượng 'Dùng một lần' (triển khai IDisposable và triển khai mẫu Dùng một lần). Trong finalizer, tôi đưa ra một Assert khi finalizer được gọi, và đối tượng chưa được xử lý.
tôi đã dựa trên một bài báo của Ian Griffiths:
http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
tôi sẽ lập luận chống lại việc có một lớp cơ sở để xử lý xử lý . Vì .NET là thừa kế đơn, điều này khóa bạn vào một chuỗi thừa kế rất nghiêm ngặt đòi hỏi DisposeBase của bạn phải ở trên cùng. –
bên cạnh đó bạn chỉ có thể sử dụng "System.ComponentModel.Component" –
Tôi không chắc chắn nếu bạn đang sử dụng C# hoặc VB, nhưng trong C#, các "thực hành tốt nhất" cách để xử lý các đối tượng của loại IDisposable là đặt mã trong một khối sử dụng.
"Câu lệnh sử dụng cho phép lập trình viên chỉ định khi nào các đối tượng sử dụng tài nguyên sẽ giải phóng chúng. Đối tượng được cung cấp cho câu lệnh sử dụng phải triển khai giao diện IDisposable. Giao diện này cung cấp tài nguyên của đối tượng." - MSDN Link
HTH,
-Dan
Điều này không có bất kỳ cách nào trả lời câu hỏi. –
Visual Studio 2008 có thể được cấu hình để cho tôi cảnh báo nếu tôi tạo một đối tượng thực hiện IDisposable, và sau đó quên để kèm theo nó trong một khối sử dụng? – ChrisW
Nếu bạn bật FxCop Thiết kế quy tắc nó sẽ cho bạn biết khi bạn không thực hiện IDisposable và bạn có các thành viên mà thực hiện IDisposable, như thế này:
class Program
{
private DataTable NotDisposed;
public Program()
{
NotDisposed = new DataTable();
}
static void Main()
{
}
}
FxCop thật tuyệt vời cho loại nội dung này. 'Tất nhiên nó sẽ được tốt đẹp nếu studio trực quan thực sự cảnh báo bạn nếu bạn đã thực hiện một sai lầm bằng cách sử dụng (hoặc thực hiện IDisposable), nhưng heck. –
- 1. Cảnh báo C4345 của Visual Studio có sai không?
- 2. Visual Studio cảnh báo C4133
- 3. Tôi có thể recolor Visual Studio 11 không?
- 4. Tại sao phương thức Dispose() không có sẵn trên đối tượng IDisposable của tôi?
- 5. Cảnh báo "đối tượng tạm thời" - có phải là tôi hoặc trình biên dịch không?
- 6. Tôi có thể xử lý cảnh báo cụ thể dưới dạng lỗi không?
- 7. Tôi có thể thử/bắt cảnh báo không?
- 8. Làm thế nào tôi có thể ngăn chặn visual studio từ poping lên khi BackgroundWorker tôi ném một lỗi
- 9. Có thể có Visual Studio cập nhật từ SVN khi tôi mở một giải pháp?
- 10. CA1001 Visual Studio 2012 Cảnh báo phân tích mã. Nó có nghĩa là gì?
- 11. Tôi có thể xóa bối cảnh đối tượng được quản lý không?
- 12. Tôi có thể tắt cảnh báo "đối sánh mẫu không đầy đủ" chỉ cho lambdas không?
- 13. Số cảnh báo Visual Studio 2010. Tôi tìm thấy chúng ở đâu?
- 14. Cách xử lý Cảnh báo C4100 trong Visual Studio 2008
- 15. Visual Studio 2010 Winforms giữ tài nguyên bị quên
- 16. Git Git của tôi quên bí danh của tôi. Tôi có thể làm gì?
- 17. Tôi có thể chạy Visual Studio 2008 x86 trên Windows Vista x64 không?
- 18. Tôi có thể cài đặt Visual Studio 2010 AFTER Visual Studio 2012 một cách an toàn không?
- 19. Tôi có thể loại trừ một số cảnh báo cụ thể khỏi "xử lý cảnh báo dưới dạng lỗi" mà không vô hiệu hóa chúng không?
- 20. Tôi không thể tìm thấy xsd.exe trong Visual Studio 2008?
- 21. Tôi không thể biên dịch trong Visual Studio 2010
- 22. Làm cách nào để tôi có thể tạo Visual Studio ngay trước khi chương trình dừng?
- 23. Tôi có thể tạo một tệp nằm bên cạnh tệp .Designer.cs trong Visual Studio không?
- 24. Tôi có thể thấy lý do cảnh báo ở đâu?
- 25. Làm thế nào tôi có thể đảm bảo rằng tôi vứt bỏ một đối tượng trong đơn của tôi trước khi đơn đăng ký đóng?
- 26. Làm cách nào tôi có thể kết nối Visual Studio 2008 với Team Foundation Service và Visual Studio Online?
- 27. Điều gì có thể WinDbg cho tôi biết rằng Visual Studio không thể?
- 28. Cách tắt cảnh báo trong Visual Studio cho một dự án triển khai Web Visual Basic
- 29. Tôi có thể tạo đối tượng cho giao diện không?
- 30. Tắt Visual Studio Thiếu Cảnh báo Nhận xét XML
ReSharper cũng sẽ làm điều này. –
CodeRush Xpress thậm chí có sẵn MIỄN PHÍ: http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/ –
FxCop và Genderme cũng sẽ làm điều này (cả miễn phí) – Paco