Modelクラス(MVC)のc#でのインタフェースクラス

インタフェースとクラスが適切に構造化されているかどうかを、下のコードで教えてください。

私は、インターフェイスにloaddata()という単一のメソッドを持つ必要があると言っています。 2つの異なるテーブルを用意するために2つの異なるメソッド(リストを返す)があります。

クラスEmployeeDetailsとJobDetailsはreadonlyクラスであり、データは外部データベースから取得されます。

public interface IGetData
{
  public List LoadData{get;set;}
  public List 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 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 JobNameList { get; set; }
  public int ContractID { get; set; }
  public string JobName { get; set; }
  public JobDetails() {
  public  List LoadData2
  { 
    get
    {
      var jobResult = from c in STASContext.ContractDetails_View 
                      select new JobDetails
                      {                    
                        JobName=c.JobName,
                         ContractID = c.ContractId
                      };

      return jobResult.ToList();
    }
  }
}
0
私は質問を理解できませんでした...あなたは質問をしながら具体的にできますか?それは他の人がそれに適切に答えるのを助けるでしょう。
追加された 著者 pramodtech,
あなたのコードを書式化し、本当の質問をしてください(あなたの問題を明確にする)。可能な限り明確にする。
追加された 著者 Bas Slagter,

1 答え

あなたのコードについてもっと知らなくても、これはもう少し推測に過ぎません。しかし、あなたのインターフェイスは間違って見えます。 EmplyeeeDetailsクラスはLoadData2関数を呼び出さず、JobDetailsはLoadData関数を呼び出さないため、間違っています。

2つの別々のインターフェースを持つべきであるように見えます(そして、それらはそのプロパティのように見えます):

public interface IGetEmployeeDetails
{
  List LoadEmployeeDetails();
}

public interface IGetJobDetails
{
  List LoadJobDetails();
}

そしてそれを別々に実装してください:

public  class EmployeeDetails : IGetEmployeeDetails
{
  //class stuff
}

public class JobDetails : EmployeeDetails, IGetJobDetails
{
  //class stuff
}

JobDetailsはEmployeeDetailsを継承し、IGetJobDetailsを実装するため、 LoadEmployeeDetails()および LoadJobDetails()の両方のインタフェース呼び出しを使用できます。

両方のインタフェースを汎用バージョンに置き換えることができます。

public interface IGetDetails {
  List LoadData();
}

それ以外の場合は、実際の問題の内容を指定する必要があります。

1
追加された
どうもありがとう。私は前述のようにコードを実装し、それは正常に動作します。
追加された 著者 Jyothi Srinivasa,