Dans mes classes, j'implémente IDisposable comme suit:
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;
}
}
Dans VS2012, mon analyse de code dit d'implémenter correctement IDisposable, mais je ne suis pas sûr de ce que j'ai fait de mal ici.
Le texte exact est le suivant:
CA1063 Implémenter correctement IDisposable Fournit une implémentation remplaçable de Dispose (bool) sur 'User' ou marque le type comme scellé. Un appel à Dispose (false) ne doit nettoyer que les ressources natives. Un appel à Dispose (true) doit nettoyer les ressources gérées et natives. stman User.cs 10
Pour référence: CA1063: implémenter correctement IDisposable
J'ai lu cette page, mais j'ai bien peur de ne pas vraiment comprendre ce qui doit être fait ici.
Si quelqu'un peut expliquer en termes plus simples quel est le problème et / ou comment IDisposable doit être implémenté, cela aidera vraiment!
IDispoable
si vous avez des ressources non gérés à disposer de (ce qui inclut les ressources non gérés qui sont enveloppées ( SqlConnection
, FileStream
, etc.). Vous ne et ne devrait pas mettre en œuvre IDisposable
si vous n'avez réussi ressources comme ici. Ceci est, l' OMI, un problème majeur avec l'analyse de code. Il est très bon pour vérifier les petites règles stupides, mais pas bon pour vérifier les erreurs conceptuelles.
Dispose
?