Ich habe einen Fehler in meinem Code wie folgt aufgelistet: 'DatabaseLayer': in einer using-Anweisung verwendete Typ muss implizit in 'System.IDispable' konvertiert werden.type in einer using-Anweisung verwendet werden muss implizit in 'System.IDisposable' konvertiert werden
Ich habe versucht, MSDN und andere Stack Overflow-Fragen zu betrachten, aber ich habe den Fehler nicht behoben. Ich verwende Visual Studio 2015 mit .NET Framework 4.5.1.
Der Fehler ist in Zeile 56, aber ich habe über die Zeile mit Fehler kommentiert. Unten ist der Code in meiner Datei:
public class UserDataAccessLayer : IDisposable
{
public bool Create(string username, string pwd, string email)
{
bool retVal = false;
SqlCommand sqlCmd = new SqlCommand("CreateUser");
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Username", username);
sqlCmd.Parameters.AddWithValue("@Pwd", pwd);
sqlCmd.Parameters.AddWithValue("@Email", email);
int result = new DatabaseLayer().ExecuteNonQuery(sqlCmd);
if (result != Int32.MaxValue)
retVal = true;
return retVal;
}
public bool Create(string username, string pwd, string email, int roleId)
{
bool retVal = false;
SqlCommand sqlCmd = new SqlCommand("CreateUser");
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Username", username);
sqlCmd.Parameters.AddWithValue("@Pwd", pwd);
sqlCmd.Parameters.AddWithValue("@Email", email);
int result = new DatabaseLayer().ExecuteNonQuery(sqlCmd);
if (result != Int32.MaxValue)
retVal = true;
return retVal;
}
public void Dispose()
{
throw new NotImplementedException();
}
public User GetUserInfo(string username, string pwd)
{
User user = null;
using (DatabaseLayer dbLayer = new DatabaseLayer())
{
SqlCommand sqlCmd = new SqlCommand("GetUserInfo");
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Username", username);
sqlCmd.Parameters.AddWithValue("@Pwd", pwd);
user = dbLayer.GetEntityList<User>(sqlCmd).FirstOrDefault();
}
return user;
}
}
DatabaseLayer implementiert IDisposable nicht, also erstellen Sie es nicht innerhalb einer using-Anweisung – Will
Während der Fehler ziemlich klar ist, ist der Code in der Post nicht - es gibt keine Informationen darüber, was "DatabaseLayer" Typ ist. Bitte lesen [MCVE] Anleitung zum Buchungscode. –