Я использую Visual Studio 2010, .NET Framework 4.
Я получаю тип , используемый в операторе using, должен быть неявно преобразован в ошибку 'System.IDisposable' , хотя яреализации IDisposable
, поэтому я не уверен, где я делаю ошибку.Пожалуйста, проверьте и дайте мне знать.
У меня есть класс с именем MyDatabaseContext
, который содержит DbConnection
;он реализует IDisposable
:
public abstract class MyDatabaseContext : IDisposable
{
private string _dataProvider;
private string _connectionString;
private DbConnection _dbConnection;
public MyDatabaseContext(string dataProvider, string connectionString)
{
_dataProvider = dataProvider;
_connectionString = connectionString;
}
public void OpenConnection()
{
DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory(_dataProvider);
_dbConnection = dbProviderFactory.CreateConnection();
_dbConnection.ConnectionString = _connectionString;
_dbConnection.Open();
}
public void Dispose()
{
if (_dbConnection != null)
{
if (_dbConnection.State != ConnectionState.Closed)
{
_dbConnection.Close();
}
_dbConnection.Dispose();
_dbConnection = null;
}
}
}
Теперь у меня есть класс EmployeeDatabaseContext
, который наследуется от MyDatabaseContext
.В нем у меня есть метод test () , где я вызываю метод OpenConnection () родительского класса внутри блока using
.
public class EmployeeDatabaseContext : MyDatabaseContext
{
public EmployeeDatabaseContext(string dataProvider, string connectionString)
: base(dataProvider, connectionString)
{
}
public void test()
{
using (OpenConnection())
{
}
}
}
Проблема в том, что я получаю ошибку при сборке.Ошибка в классе EmployeeDatabaseContext
в методе test () в блоке using
.Ошибка:
'void': тип, используемый в операторе using, должен быть неявно преобразован в 'System.IDisposable'
Но родительский класс MyDatabaseContext
реализуетIDisposable
, поэтому я не знаю, почему я получаю эту ошибку.
Спасибо