我正在尝试通过实现IDisposable接口来创建一个可任意处理的ADOX Catalog实例,但我得到了一个错误: ADOX.Catalog‘不包含'Dispose’的定义,并且找不到接受'ADOX.Catalog‘类型的第一个参数的扩展方法'Dispose’(您是否缺少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
发布于 2012-07-21 14:22:56
字段cat似乎在构造函数中被设置为null,所以它一直都是null。在将“cut”设置为null之前,请尝试清除它。
如果你打算在类中的其他地方使用cat,你应该从构造函数中移除 cat=null;,然后像这样重写dispose:
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;
}
}
}
}https://stackoverflow.com/questions/11589953
复制相似问题