2013-02-22 5 views
0

메신저로 뭔가 잘못하고있을 수도 있습니다. .cs 파일 이름 PayrollDetails.cs에 있습니다. 그 안에 나는 두 클래스 (1) GrossPay와 (2) PayrollDetails을 만들었습니다. 저는 GrossPay 클래스에 getters와 setters 메소드가 있습니다. 나는 그것을 사용하고 싶습니다. 왜 나는 그것을 얻지 못하고 있는가?하나의 .cs 파일에 두 개의 클래스가 있습니다.

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

namespace SSPModel 
{ 
public class getGrossPay { 
     public List<BasicPay> BPList; 
     private List<Allowance> AlGradeList; 
     private List<Allowance> AlPostList; 
     private List<AdditionalEarnings> AdEarnList; 
     private List<Benefits> BenList; 

     public void setBPList(List<BasicPay> a) 
     { 
      BPList = a; 

     } 
     public List<BasicPay> GetBPList() { 

      return BPList; 
     } 

     public List<Allowance> GetAlGradeList() 
     { 
      return AlGradeList; 
     } 

     public void setAlGradeList(List<Allowance> a) 
     { 
      AlGradeList = a; 
     } 

     public List<Allowance> GetAlPostList() 
     { 
      return AlPostList; 
     } 

     public void setAlPostList(List<Allowance> a) 
     { 
      AlPostList = a; 
     } 
     public List<AdditionalEarnings> GetAdEarnList() 
     { 
      return AdEarnList; 
     } 

     public void setAdEarnList(List<AdditionalEarnings> a) 
     { 
      AdEarnList = a; 
     } 


     public List<Benefits> GetBenList() 
     { 
      return BenList; 
     } 

     public void setBenList(List<Benefits> a) 
     { 
      BenList = a; 
     } 
     public void ssss(getGrossPay inst) 
     { 
     List<BasicPay> a = inst.GetBPList(); 
     for (int i = 0; i < a.Count(); i++) 
     { 
      Debug.WriteLine(a.ElementAtOrDefault(i)); 

     } 

     } 
     } 
     } 

    public class PayrollDetails 
    { 

     public static void doSomething() 
     { 
      // i am not getting to call any method from the class getGrossPay. 
    } 
} 

또한 다소 관련이없는 질문에 대해서는 모범 사례에 대한 조언이 필요합니다. 다른 .cs 파일 (예 : BasicPay.cs, Allowance.cs)이 있는데 여기에서 값을 계산합니다. 다음 GrossPay 클래스에서 setter 메서드를 호출합니다 (이 완벽하게 작동합니다)하지만 다른 위치 (또는 .cs 파일) get 메서드를 사용하고 싶습니다. 기본적으로 한 곳을 설정하고 다른 위치에서 getter를 사용하고 싶습니다. 다른 .cs 또는 위치에서 getter 메서드를 사용하기 위해 새 인스턴스를 만든 경우 null이됩니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 나는 기본적으로 내가하고 싶은 함수의 긴 목록을 가지고있다. 하나가 완성되었을 때, 나는 setter를 사용하고, ALL이 완료되면 ALL로 설정된 getter 메서드를 호출하고 내 계산을 수행한다. 어떤 도움이라도 대단히 감사 할 것입니다. 더 많은 경험 프로그래머가이 작업을 수행하는 더 좋은 방법을 가지고 있습니다.

+0

'getGrossPay'는 _action_이 아니고 _thing_이 아니므로 클래스를 다른 것으로 부릅니다 (아마도'GrossPay'?). 또한 C#은 [properties] (http://www.dotnetperls.com/property) 기능을 제공합니다. 그것들은 매우 유용합니다. 기본적으로 여러분이 정의한 getter/setter 메소드에 대한 추상화입니다. – voithos

답변

1

1 파일에 2 개의 클래스가있는 것은 불법입니다. 사실 1 개의 파일로 전체 프로그램을 만들 수 있습니다.

모든 것이 가독성에 관한 것입니다. 클래스 당 파일이 1 개있는 편이 편리하며 파일 이름은 일반적으로 클래스 이름입니다.

프로젝트가 커지면 모든 코드를 모듈로 나눌 네임 스페이스가 생깁니다.

1

doSomethingPayrollDetails의 정적 방법입니다. getGrossPay의 메서드 및 멤버는 정적이 아니며 인스턴스 메서드 및 멤버입니다. 메소드를 호출하기 전에 새 getGrossPay를 인스턴스화해야합니다.

public static void doSomething() 
{ 
    var grossPay = new getGrossPay(); 
    var earnList = grossPay.GetAdEarnList(); 
    //etc. 
} 
관련 문제