PDA

View Full Version : خطای 'final_doctor.Controlable.ControlInfo()' must declare a body because it is not marked



saba664
شنبه 02 دی 1396, 12:12 عصر
147309


علت این خطا چیه؟

saba664
شنبه 02 دی 1396, 14:27 عصر
ی دونه Interface قبلش نوشتم خطاش رفت

فقط نمی دونم چرا؟ کاربرد اینترفس چی بود اینجا

محمد آشتیانی
شنبه 02 دی 1396, 17:36 عصر
در یک کلاس که abstract نیست ، متد های شما باید پیاده سازی داشته باشند ، یعنی:

public void ControlInfo()
{


}

اگر قرار هست متد های شما صرفا شامل امضای متد باشند و بدون پیاده سازی ، کلاس و متد شما باید abstract باشند و کلاس هایی که از اون ارث می برند ، اون متد ها رو پیاده سازی کنند

public abstract class Controlable
{
public abstract void ControlInfo();
}


اگر هم قطعا هیچ کدوم از متد های کلاس abstract شما ، پیاده سازی ندارند ، میتونید بجاش از interface استفاده کنید ، به اینصورت

public interface IControlable
{
void ControlInfo();
}




در مورد تفاوت های کلاس abstract و interface هم مطالعه بفرمائید.

saba664
چهارشنبه 06 دی 1396, 10:51 صبح
خب ممنون از اطلاعاتی که در اختیارم قرار دادین فقط ی موضوع جالب پیش اومده که علتشو نمیدونم

قبلا هیچ خطایی نمیداد اما همینکه ی کلاس نوشتم که از کلاس IControlable استفاده کنه بهم خطا داده که کلاس user نمی تونه اجرا کنه این کلاس IControlable رو حالا باید چیکار کنم؟اینم کد خطا

147346

محمد آشتیانی
چهارشنبه 06 دی 1396, 11:10 صبح
سلام
وقتی یک کلاس قراره یک اینترفیس رو پیاده سازی کنه ، باید همه ی متدها رو پیاده سازی کنه.
شما کد کامل اینترفیستون رو اینجا قرار بدید لطفا

saba664
چهارشنبه 06 دی 1396, 11:40 صبح
سلام
وقتی یک کلاس قراره یک اینترفیس رو پیاده سازی کنه ، باید همه ی متدها رو پیاده سازی کنه.
شما کد کامل اینترفیستون رو اینجا قرار بدید لطفا

سلام به شما

خب قضیه همون کدیه که خودتون زحمت کشیدین توضیح دادین گفتین اگه

اگر هم قطعا هیچ کدوم از متد های کلاس abstract شما ، پیاده سازی ندارند ، میتونید بجاش از interface استفاده کنید ، به اینصورت


1
2
3
4
5
public interface IControlable
{
void ControlInfo();
}





در واقع سه تا کلاس نوشتم
یکی توضیحات
یکی یوزر
یکی هم همین void ControlInfo()

حالا دو تا کلاسم هم کدهاش به صورت زیره ملاحظه کنین

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace final_doctor
{
class User_Exceptions :ApplicationException
{

//================================================== ===
// class User_Exceptions : ApplicationException
//{
//----------------------------------------------
public User_Exceptions(String Message)
: base("خطا در اطلاعات کاربران" + Message)
{
}
}
//================================================== ===
class User_Exceptions_UserName : ApplicationException
{
//----------------------------------------------
public User_Exceptions_UserName()
: base("نام کاربری وارد شده، معتبر نیست")
{
}
}
//================================================== ===
class User_Exceptions_Password : ApplicationException
{
//----------------------------------------------
public User_Exceptions_Password()
: base("رمز عبور وارد شده، معتبر نیست")
{
}
}
//================================================== ===
class User_Exceptions_NoManageUserRemine : ApplicationException
{
//----------------------------------------------
public User_Exceptions_NoManageUserRemine()
: base("هیچ کاربری برای مدیریت دیگر کاربران وجود ندارد")
{
}
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace final_doctor
{
public class User : IControlable
{
public Boolean Access_sabt = true, Access_gozaresh = true, Access_backup = true, Access_Users = true, Access_jostejo = true, Access_edit = true, Access_delete = true, Access_savabegh = true;
private string _userName = "";
public string UserName
{

get { return _userName ; }
set
{
if (value == "")
throw new User_Exceptions_UserName();
else
_userName = value;
}
}
//--------------------------------------------------------------
private string _password = "";
public string Password
{
get { return _password; }

set
{
if (value.Length < 6)
throw new User_Exceptions_Password();
else

_password = value;
}
}

//--------------------------------------------------------------

public void ControlInfo()
{
if (_userName == "")
throw new User_Exceptions_UserName();
if (_password.Length < 6)
throw new User_Exceptions_Password();
}
//--------------------------------------------------------------

public Boolean IsCorrectUser()
{
ControlInfo();
Condition Cond = new Condition(2);
Cond.AddCondition("UserName", Operatotrs.مساوی, _userName, Concat_Type.And);
Cond.AddCondition("Pass", Operatotrs.مساوی, _password, Concat_Type.None);
DataTable DT = new DataTable();
DT = DataBase_SQL.Action(DBOperation.Select, Cond, "Users", "UserName");
if (DT.Rows.Count > 0)
{
_userName = DT.Rows[0][0].ToString();
return true;
}
else
return false;
}
//--------------------------------------------------------------

public void ShowUsers(System.Windows.Forms.ComboBox CMB)
{
CMB.DataSource = DataBase_SQL.Action(DBOperation.Select, null, "Users", "UserName", "UserName");
CMB.DisplayMember = "UserName";
CMB.ValueMember = "UserName";
}


//--------------------------------------------------------------


public Boolean IsDuplicate()
{
Condition Cond = new Condition(1);
DataTable DT = new DataTable();
Cond.AddCondition("UserName", Operatotrs.مساوی, _userName, Concat_Type.None);
DT = DataBase_SQL.Action(DBOperation.Select, Cond, "Users", "UserName");
if (DT.Rows.Count > 0) return true; else return false;
}


//--------------------------------------------------------------

public void CreateUser()
{
ControlInfo();
DataBase_SQL.Action(DBOperation.Insert, null, "Users", "UserName,Pass,Access_sabt, Access_gozaresh, Access_backup, Access_jostejo, Access_edit, Access_Users,Access_delete,Access_savabegh", _userName, _password, Access_sabt, Access_gozaresh, Access_backup, Access_jostejo, Access_edit, Access_Users, Access_delete, Access_savabegh);
}

//--------------------------------------------------------------
public void ShowInfo(String UserName)
{
Condition Cond = new Condition(1);
DataTable DT = new DataTable();
Cond.AddCondition("UserName", Operatotrs.مساوی, UserName, Concat_Type.None);
DT = DataBase_SQL.Action(DBOperation.Select, Cond, "Users", "UserName,Pass");
_userName = DT.Rows[0]["UserName"].ToString();
_password = DT.Rows[0]["Pass"].ToString();
}
//--------------------------------------------------------------

public void ChangeUserInfo(String UserName)
{
if (Access_Users == false)
{
DataTable DT = new DataTable();
DT = DataBase_SQL.Bank_Select("Select UserName From Users Where UserName<>'" + UserName + "' And Access_Users=1");
if (DT.Rows.Count == 0) throw new User_Exceptions_NoManageUserRemine();
}
Condition Cond = new Condition(1);
Cond.AddCondition("UserName", Operatotrs.مساوی, UserName, Concat_Type.None);
DataBase_SQL.Action(DBOperation.Update, Cond, "Users", "UserName,Pass,Access_sabt, Access_gozaresh, Access_backup, Access_jostejo, Access_edit, Access_Users,Access_delete,Access_savabegh", _userName, _password, Access_sabt, Access_gozaresh, Access_backup, Access_jostejo, Access_edit, Access_Users, Access_delete, Access_savabegh);
}
//--------------------------------------------------------------
public void DeleteUser()
{
DataTable DT = new DataTable();
DT = DataBase_SQL.Bank_Select("Select UserName From Users Where UserName<>'" + _userName + "' And Access_Users=1");
if (DT.Rows.Count == 0) throw new User_Exceptions_NoManageUserRemine();
Condition Cond = new Condition(1);
Cond.AddCondition("UserName", Operatotrs.مساوی, _userName);
DataBase_SQL.Action(DBOperation.Delete, Cond, "Users", "");
}
//--------------------------------------------------------------
public void LoadAccess(String UserName)
{
DataTable DT = new DataTable();
Condition Cond = new Condition(1);
Cond.AddCondition("UserName", Operatotrs.مساوی, UserName);
DT = DataBase_SQL.Action(DBOperation.Select, Cond, "Users", "UserName,Pass,Access_sabt, Access_gozaresh, Access_backup, Access_jostejo, Access_edit, Access_Users,Access_delete,Access_savabegh");
Access_sabt = Convert.ToBoolean(DT.Rows[0]["Access_sabt"]);
Access_gozaresh = Convert.ToBoolean(DT.Rows[0]["Access_gozaresh"]);
Access_backup = Convert.ToBoolean(DT.Rows[0]["Access_backup"]);
Access_jostejo = Convert.ToBoolean(DT.Rows[0]["Access_jostejo"]);
Access_edit = Convert.ToBoolean(DT.Rows[0]["Access_edit"]);
Access_Users = Convert.ToBoolean(DT.Rows[0]["Access_Users"]);
Access_delete = Convert.ToBoolean(DT.Rows[0]["Access_delete"]);
Access_savabegh = Convert.ToBoolean(DT.Rows[0]["Access_savabegh"]);
}










}

}

محمد آشتیانی
چهارشنبه 06 دی 1396, 14:03 عصر
سلام
اگر اینترفیس شما فقط یک متد داره به اسم ControlInfo ، نباید در کلاس User این خطا رو مشاهده کنید ، من فکر میکنم اینترفیس شما آیتم های دیگری نیز دارد

saba664
چهارشنبه 06 دی 1396, 14:33 عصر
سلام
اگر اینترفیس شما فقط یک متد داره به اسم ControlInfo ، نباید در کلاس User این خطا رو مشاهده کنید ، من فکر میکنم اینترفیس شما آیتم های دیگری نیز دارد

سلام
فقط همینه