2011-11-25 4 views
0

인터페이스 및 클래스가 적절하게 구조화되었는지 여부를 아래의 코드에서 알려주십시오.Model 클래스 (MVC)의 C# 인터페이스 클래스

제가 말하고자하는 것은 loaddata(), 인 인터페이스에서 단 하나의 메소드가 필요하지만 두 개의 다른 테이블을 수용하기 위해 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(); 
    } 
    } 
} 
+3

코드를 형식화하고 실제 질문을하십시오 (문제를 해결하십시오). 가능한 명확히하십시오. –

+0

질문을 이해할 수 없었습니다 ... 질문하는 중에 구체적으로 구체적으로 답변 해 주실 수 있습니까? 다른 사람들이 올바르게 대답하도록 도울 것입니다. – pramodtech

답변

1

코드에 대해 더 알지 못하는 사이에 조금 더 추측 할 것입니다. 하지만 인터페이스가 잘못되었습니다. EmplyeeeDetails 클래스가 LoadData2 함수를 호출하지 않고 JobDetails가 LoadData 함수를 호출하지 않기 때문에 잘못되었습니다. JobDetails이 EmployeeDetails 및 구현을 상속하기 때문에

public class EmployeeDetails : IGetEmployeeDetails 
{ 
    //class stuff 
} 

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

:

public interface IGetEmployeeDetails 
{ 
    List<EmployeeDetails> LoadEmployeeDetails(); 
} 

public interface IGetJobDetails 
{ 
    List<JobDetails> LoadJobDetails(); 
} 

그리고 별도로 구현 : 당신은 두 개의 별도의 인터페이스를 가져야한다 (그들은 더 많은 기능 특성처럼)처럼

같습니다 IGetJobDetails를 사용하면 인터페이스 호출 인 LoadEmployeeDetails()LoadJobDetails()을 사용할 수 있습니다.

당신은 일반 버전과 두 인터페이스를 대체 할 수 있습니다 : 그보다 더

public interface IGetDetails<T> { 
    List<T> LoadData(); 
} 

다른, 당신은 실제 문제가 무엇인지를 지정해야합니다.

+0

대단히 감사합니다. 내가 언급 한대로 코드를 구현하고 잘 작동합니다. –