簡體   English   中英

C#構造函數有2個參數,但聲稱它沒有接受兩個參數的構造函數

[英]C# Constructor has 2 arguments, but claims it does not have a constructor that takes two arguments

所以這是我的問題。 我有一個名為Login的類,該類將用於登錄和創建新的登錄帳戶。

我創建了一個不帶參數的Login構造函數

public Login()
{
    _gloID = 0;
    _Username = null;
    _Password = null;
    _Note = null;
    _Active = false;
    _Status = null;
    _gvoID = 0;
    _DateModified = new DateTime(1901, 1, 1);
    _ModifiedBy = 0;
}

我還創建了一個使用兩個參數的Login構造函數。 該構造函數獲取用戶名和密碼,然后從數據庫中收集其余信息。

public Login(string username, string password)
{
    // Declarations
    uint gloid = 0, gvoid = 0, modifiedby = 0;
    string note = null, status = null;
    bool active = false;
    DateTime datemodified = new DateTime(1901, 1, 1);
    // Command
    string query = string.Format("SELECT glo_id, glo_note, glo_active, glo_status, gvo_id, date_modified, modified_by FROM gfrc_login" +
                                    " WHERE glo_username = '{0}' AND glo_password = '{1}'", username, password);

    try
    {
        using (conn)
        {
            conn.Open();
            cmd = new OleDbCommand(query, conn);
            rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                gloid = Convert.ToUInt32(rdr.GetString(0));
                note = rdr.GetString(1).ToString();
                active = Convert.ToBoolean(rdr.GetString(2));
                status = rdr.GetString(3).ToString();
                gvoid = Convert.ToUInt32(rdr.GetString(4));
                datemodified = Convert.ToDateTime(rdr.GetString(5));
                modifiedby = Convert.ToUInt32(rdr.GetString(6));
            }
        }
    }
    finally
    {
        if (rdr != null)
            rdr.Close();
    }
    if (conn != null)
    {
        conn.Close();
    }

    _gloID = gloid;
    _Username = username;
    _Password = password;
    _Note = note;
    _Active = active;
    _Status = status;
    _gvoID = gvoid;
    _DateModified = datemodified;
    _ModifiedBy = modifiedby;
}

請注意,所有數據庫連接變量都已在類的開頭聲明。

現在,當我嘗試運行以下命令時,出現一條錯誤消息:'Login'不包含帶有2個參數的構造函數。

protected void Login_Authenticate(object sender, EventArgs e)
{
    string username = txtUsername.Text;
    string password = CalculateMD5(txtPassword.Text);
    Login login = new Login(username, password);
}

編輯:僅供參考,我已采取措施防止在我的其余代碼中進行SQL注入。

您可能是指兩個不同的Login類。 嘗試指定全名(帶有名稱空間),然后看看會發生什么。

您正在從中調用的類也稱為Login ,我可以從生成的事件處理程序中得知。

您必須使用類型的完整名稱空間或將類重命名為其他名稱。

例如:

protected void Login_Authenticate(object sender, EventArgs e)
{
    string username = txtUsername.Text;
    string password = CalculateMD5(txtPassword.Text);
    My.Namespace.Login login = new My.Namespace.Login(username, password);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM