[英]interfaces classes in c# in Model class(MVC)
您能否在下面的代碼中幫助我,請問接口和類的結構是否正確?
我的意思是說,我需要在接口中使用單個方法loaddata(),但是我有2種不同的方法(返回列表)來滿足2種不同的表。
EmployeeDetails和JobDetails類是只讀類,數據來自外部數據庫。
public interface IGetData
{
public List<EmployeeDetails> LoadData{get;set;}
public List<JobDetails> LoadData2{get;set;}
}
public class EmployeeDetails : IGetData
{
public int EmployeeID { get; set; }
public string EmployeeNumber { get; set; }
public string EmployeePosition { get; set; }
public string EmployeeDivision { get; set; }
public string EmployeeName { get; set; }
public string ApproverName { get; set; }
public int ApproverID { get; set; }
public EmployeeDetails()
{
public string LoggedInEmployeeName
{
get
{
return System.Web.HttpContext.Current.User.Identity.Name;
}
}
STASEntities STASContext = new STASEntities();
public List<EmployeeDetails> LoadData
{
get
{
var EmployeeResults = from e in STASContext.Employee_VIEW
where
e.UserName == LoggedInEmployeeName
select new EmployeeDetails
{
EmployeeDivision = e.BusinessUnitName,
EmployeeID = e.EmployeeId,
EmployeePosition = " ",
EmployeeName = e.EmployeeName,
ApproverID = e.EmpAppId,
ApproverName = e.ApproverName,
EmployeeNumber = e.EmployeeNumber
};
return EmployeeResults.ToList();
}
}
}
}
public class JobDetails:EmployeeDetails, IGetData//for future employee assigned against job.
{
// public IList<ContractDetails_View> JobNameList { get; set; }
public int ContractID { get; set; }
public string JobName { get; set; }
public JobDetails() {
public List<JobDetails> LoadData2
{
get
{
var jobResult = from c in STASContext.ContractDetails_View
select new JobDetails
{
JobName=c.JobName,
ContractID = c.ContractId
};
return jobResult.ToList();
}
}
}
在不了解您的代碼的情況下,這將只是一個猜測。 但是您的界面看起來不對。 由於EmplyeeeDetails類未調用LoadData2函數,而JobDetails未調用LoadData函數,因此出現了錯誤。
看起來您應該有兩個單獨的接口(它們看起來更像是具有屬性的函數):
public interface IGetEmployeeDetails
{
List<EmployeeDetails> LoadEmployeeDetails();
}
public interface IGetJobDetails
{
List<JobDetails> LoadJobDetails();
}
然后分別實現它們:
public class EmployeeDetails : IGetEmployeeDetails
{
//class stuff
}
public class JobDetails : EmployeeDetails, IGetJobDetails
{
//class stuff
}
因為JobDetails繼承了EmployeeDetails並實現了IGetJobDetails,所以它既可以使用接口接口LoadEmployeeDetails()
也可以使用LoadJobDetails()
。
您也許可以用通用版本替換兩個接口:
public interface IGetDetails<T> {
List<T> LoadData();
}
除此之外,您需要指定實際的問題是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.