簡體   English   中英

在Model類(MVC)中的C#中接口類

[英]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.

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