En mis clases implemento IDisposable de la siguiente manera:
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;
}
}
En VS2012, mi análisis de código dice implementar IDisposable correctamente, pero no estoy seguro de qué he hecho mal aquí.
El texto exacto es el siguiente:
CA1063 ID de implemento desechable correctamente Proporcione una implementación reemplazable de Dispose (bool) en 'Usuario' o marque el tipo como sellado. Una llamada a deshacerse (falso) solo debe limpiar los recursos nativos. Una llamada a la eliminación (verdadero) debe limpiar los recursos administrados y nativos. stman User.cs 10
Para referencia: CA1063: ID de implemento desechable correctamente
He leído esta página, pero me temo que realmente no entiendo lo que hay que hacer aquí.
Si alguien puede explicar en términos más generales cuál es el problema y / o cómo se debe implementar IDisposable, ¡eso realmente ayudará!
IDispoable
si tiene recursos no administrados de desechar (esto incluye los recursos no administrados que se envuelven ( SqlConnection
, FileStream
, etc.). No es y no debe poner en práctica IDisposable
si sólo han conseguido recursos como aquí. Esto es, la OMI, . un gran problema con el análisis de código es muy bueno en la comprobación tonta pequeñas reglas, pero no bueno en la comprobación de errores conceptuales.
Dispose
?