In meinen Klassen implementiere ich IDisposable wie folgt:
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;
}
}
In VS2012 heißt es in meiner Codeanalyse, IDisposable korrekt zu implementieren, aber ich bin mir nicht sicher, was ich hier falsch gemacht habe.
Der genaue Text lautet wie folgt:
CA1063 IDisposable korrekt implementieren Stellen Sie eine überschreibbare Implementierung von Dispose (bool) für 'User' bereit oder markieren Sie den Typ als versiegelt. Ein Aufruf von Dispose (false) sollte nur native Ressourcen bereinigen. Ein Aufruf von Dispose (true) sollte sowohl verwaltete als auch native Ressourcen bereinigen. stman User.cs 10
Als Referenz: CA1063: IDisposable korrekt implementieren
Ich habe diese Seite gelesen, aber ich fürchte, ich verstehe nicht wirklich, was hier zu tun ist.
Wenn jemand mehr Lamens erklären kann, was das Problem ist und / oder wie IDisposable implementiert werden sollte, wird das wirklich helfen!
IDispoable
wenn Sie nicht verwalteten Ressourcen zu entsorgen (dies schließt nicht verwalteten Ressourcen , die gewickelt werden ( SqlConnection
, FileStream
usw.). Sie können und sollten nicht implementieren , IDisposable
wenn Sie nur Ressourcen wie hier geschafft haben. Das ist, IMO, Ein großes Problem bei der Code-Analyse. Es ist sehr gut darin, dumme kleine Regeln zu überprüfen, aber nicht gut darin, konzeptionelle Fehler zu überprüfen.
Dispose
?