我正在尝试通过实现IDisposable接口创建一次性ADOX Catalog实例,但我得到的错误是: ADOX.Catalog'不包含'Dispose'的定义,也没有扩展方法'Dispose'接受'ADOX.Catalog'类型的第一个参数(你是否缺少using指令或汇编引用?)
这是我的代码
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();
}
}
}
}
我在
收到错误 cat.Dispose();
你可以告诉我为什么会这样吗? Thansk
答案 0 :(得分:0)
字段cat
似乎在构造函数中设置为null,因此它始终为null。
在将其设置为null之前尝试处理'cut'。
如果您打算在班级中的其他地方使用cat
,那么您应该从构造函数中删除 cat=null;
并重写这样的处理:
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;
}
}
}
}