Di kelas saya, saya menerapkan IDisposable sebagai berikut:
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;
}
}
Di VS2012, Analisis Kode saya mengatakan untuk mengimplementasikan IDisposable dengan benar, tapi saya tidak yakin apa yang saya lakukan salah di sini.
Teks yang tepat adalah sebagai berikut:
CA1063 Implement IDisposable dengan benar Berikan implementasi Buang (bool) yang dapat ditimpa pada 'Pengguna' atau tandai jenisnya sebagai disegel. Panggilan untuk Buang (salah) seharusnya hanya membersihkan sumber daya asli. Panggilan untuk Buang (benar) harus membersihkan sumber daya yang dikelola dan asli. stman User.cs 10
Untuk referensi: CA1063: Terapkan IDisposable dengan benar
Saya sudah membaca halaman ini, tetapi saya rasa saya tidak begitu mengerti apa yang perlu dilakukan di sini.
Jika ada yang bisa menjelaskan dalam istilah yang lebih panjang tentang apa masalahnya dan / atau bagaimana IDisposable harus dilaksanakan, itu akan sangat membantu!
IDispoable
jika Anda memiliki sumber daya unmanaged untuk membuang (termasuk sumber daya unmanaged yang dibungkus ( SqlConnection
, FileStream
, dll). Anda tidak dan tidak harus menerapkan IDisposable
jika Anda hanya memiliki sumber daya dikelola seperti di sini. Hal ini, IMO, masalah besar dengan analisis kode. Ini sangat bagus dalam memeriksa aturan-aturan kecil yang konyol, tetapi tidak pandai memeriksa kesalahan konseptual.
Dispose
?