В моих классах я реализую 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 Внедрение IDisposable правильно Предоставьте переопределяемую реализацию Dispose (bool) для «User» или пометьте тип как закрытый. Вызов Dispose (false) должен только очистить собственные ресурсы. Вызов Dispose (true) должен очистить как управляемые, так и собственные ресурсы. stman User.cs 10
Для справки: CA1063: правильно реализовать ID
Я прочитал эту страницу, но боюсь, я не совсем понимаю, что здесь нужно сделать.
Если кто-то может объяснить более ламенными терминами, в чем заключается проблема и / или как должна реализовываться IDisposable, это действительно поможет!
IDispoable
случае, если у вас есть неуправляемые ресурсы, которыми можно распоряжаться (это включает неуправляемые ресурсы, которые обернуты ( SqlConnection
, FileStream
и т. Д.). Вы не реализуете и не должны внедрять, IDisposable
если у вас есть только такие управляемые ресурсы, как здесь. Это, IMO, основная проблема анализа кода. Он очень хорош для проверки маленьких глупых правил, но не хорош для проверки концептуальных ошибок
Dispose
?