Trong các lớp học của tôi, tôi triển khai IDis Dùng như sau:
public class User : IDisposable
{
public int id { get; protected set; }
public string name { get; protected set; }
public string pass { get; protected set; }
public User(int UserID)
{
id = UserID;
}
public User(string Username, string Password)
{
name = Username;
pass = Password;
}
// Other functions go here...
public void Dispose()
{
// Clear all property values that maybe have been set
// when the class was instantiated
id = 0;
name = String.Empty;
pass = String.Empty;
}
}
Trong VS2012, Phân tích mã của tôi nói rằng triển khai IDis Dùng chính xác, nhưng tôi không chắc mình đã làm gì sai ở đây.
Văn bản chính xác như sau:
CA1063 Triển khai IDis Dùng chính xác Cung cấp một triển khai Vượt qua (bool) có thể vượt quá trên 'Người dùng' hoặc đánh dấu loại là được niêm phong. Một cuộc gọi đến Vứt bỏ (sai) chỉ nên dọn sạch các tài nguyên bản địa. Một cuộc gọi đến Vứt bỏ (đúng) sẽ dọn sạch cả tài nguyên gốc và được quản lý. người dùng st.cs 10
Để tham khảo: CA1063: Triển khai IDis Dùng chính xác
Tôi đã đọc qua trang này, nhưng tôi sợ tôi không thực sự hiểu những gì cần phải làm ở đây.
Nếu bất cứ ai có thể giải thích bằng nhiều thuật ngữ hơn về vấn đề là gì và / hoặc cách IDis Dùng nên được thực hiện, điều đó sẽ thực sự có ích!
IDispoable
nếu bạn có các nguồn lực không được quản lý để xử lý (điều này bao gồm các nguồn lực không được quản lý được bao bọc ( SqlConnection
, FileStream
, vv). Bạn không và không nên thực hiện IDisposable
nếu bạn chỉ có quản lý tài nguyên như ở đây. Đây là, IMO, một vấn đề lớn với phân tích mã. Rất tốt trong việc kiểm tra các quy tắc nhỏ ngớ ngẩn, nhưng không tốt trong việc kiểm tra các lỗi khái niệm.
Dispose
?