首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用ADOX Catalog类实现IDispoable

如何用ADOX Catalog类实现IDispoable
EN

Stack Overflow用户
提问于 2012-07-21 14:17:15
回答 1查看 807关注 0票数 0

我正在尝试通过实现IDisposable接口来创建一个可任意处理的ADOX Catalog实例,但我得到了一个错误: ADOX.Catalog‘不包含'Dispose’的定义,并且找不到接受'ADOX.Catalog‘类型的第一个参数的扩展方法'Dispose’(您是否缺少using指令或程序集引用?)

这是我的代码

代码语言:javascript
复制
namespace Disposable
{
class DBGen : IDisposable
{
    Catalog cat; 
    public DBGen()
    {
        cat = new Catalog();
        cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\AccessDB\\NewMDB.mdb;" +"Jet OLEDB:Engine Type=5");
        Console.WriteLine("Database Created Successfully");
        cat = null;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool b)
    {
        if (b)
        {
            cat.Dispose();
        }
    }
}

}

我在以下位置得到错误

代码语言:javascript
复制
   cat.Dispose();

你能告诉我为什么会这样吗?Thansk

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 14:22:56

字段cat似乎在构造函数中被设置为null,所以它一直都是null。在将“cut”设置为null之前,请尝试清除它。

如果你打算在类中的其他地方使用cat,你应该从构造函数中移除 cat=null;,然后像这样重写dispose:

代码语言:javascript
复制
public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool b)
    {
        if (b)
        {
            if (cat!=null) {
                var disposableCat = cat as IDisposable;
                if (disposableCat != null) {
                   disposableCat.Dispose();
                   cat=null;
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11589953

复制
相关文章

相似问题

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