首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CA1001在包含的扩展类(初学者类)上实现IDisposable

CA1001在包含的扩展类(初学者类)上实现IDisposable
EN

Stack Overflow用户
提问于 2018-10-06 20:18:06
回答 1查看 66关注 0票数 1

我真的不明白,我所有的学习只会让我更困惑。

代码片段:

代码语言:javascript
复制
namespace Family_Finances
{
    class sqlStuff
    {
        private SQLiteConnection m_dbConnection;
        //DialogResult msgBoxResult = DialogResult.Ignore;
        //string myDirectory;
        public int beepFreq = 880;
        public int beepLength = 500;
        private SQLiteConnection dbConn;

        private string dbSelect()
        {

我想要做的是创建一个类,不用担心我甚至还没有引用它,它是可重用的,并将我所有的sqlite支持代码放在一个类中。

我已经恢复到原来的代码,因为我已经尝试了所有的内置更正,并且粪堆不断变得更深,包括在main Namespace中更改代码,在那里它甚至没有被引用。

我希望我的db_conn在整个类中都是可用的,这样我就不必在每个引用之间传递它。

有两个我知道我有问题的概念...

“使用”和"IDisposable“

(我不知道"Using“意味着"Dispose()”,我也不需要"Close()“。不幸的是,我的代码工作正常,我从来没有见过其中有"Dispose()“的例子。也许回到牧民学校学习古希腊语会更容易些?但是,我确实喜欢编码……)

那么我如何修复这个问题,这样我就可以在其他项目中重用代码,就像这个项目一样……

请温文点。我是自学的。而且,很明显,我对框架和C#的理解存在漏洞(深井)。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-10-06 20:26:29

根据微软规则,任何包含实现IDisposable接口的字段的类都应该在包含的对象上实现IDisposable模式。您的SQLiteConnection对象实现此模式。

这不是严格执行的规则,除非您计划将类作为库使用或将其公开给外部程序集。

更多信息可在此处找到:https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1001-types-that-own-disposable-fields-should-be-disposable?view=vs-2017

示例不完整:

代码语言:javascript
复制
class sqlStuff : IDisposable
{
    private SQLiteConnection m_dbConnection;
    //DialogResult msgBoxResult = DialogResult.Ignore;
    //string myDirectory;
    public int beepFreq = 880;
    public int beepLength = 500;
    private SQLiteConnection dbConn;

    public void Dispose()
    {
        m_dbConnection?.Dispose();
        dbConn?.Dispose();
        Dispose(true);
        GC.SuppressFinalize(this);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52678993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档