У своїх класах я реалізую IDisposable наступним чином:
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;
}
}
У VS2012 мій аналіз коду говорить, що правильно реалізувати IDisposable, але я не впевнений, що я тут зробив неправильно.
Точний текст такий:
CA1063 Правильно реалізувати ID Забезпечити реалізацію реалізованої версії Dispose (bool) на "User" або позначте тип як запечатаний. Заклик розпоряджатися (помилковим) повинен очищати лише рідні ресурси. Заклик розпоряджатися (правда) повинен очистити як керовані, так і рідні ресурси. stman User.cs 10
Для довідки: CA1063: Правильно реалізуйте ідентифікатор
Я прочитав цю сторінку, але боюся, що я не дуже розумію, що тут потрібно зробити.
Якщо хтось може пояснити більш ламенними термінами, в чому полягає проблема та / або як слід реалізувати IDisposable, це дійсно допоможе!
IDispoable
якщо у вас є некеровані ресурси для розпорядження (сюди входять некеровані ресурси, які завернуті ( SqlConnection
, FileStream
і т. Д.). Ви не повинні і не повинні реалізовувати, IDisposable
якщо у вас є лише керовані ресурси, наприклад, тут). ІМО, Основна проблема в аналізі коду. Дуже добре перевіряти нерозумні правила, але не дуже добре перевіряти концептуальні помилки
Dispose
?