2
나는 WageInfo
이라는 클래스가 있으며 Earning
및 Deduction
클래스와 컴포지션 관계가 있습니다. 다음과 같이 그래서 ...클래스 구성이 인스턴스 변수로
class WageInfo
{
int ID {get; set;}
Earning E = new Earning();
Deduction D = new Deduction();
}
나는 Earning
및 Deduction's
생성자에 매개 변수를 전달하는 것은 불가능하다 그래서 나는 WageInfo
생성자 내부에 이러한 객체를 초기화 havent 한 것을 알고 이것을 구현한다.
그 외의 경우, 이것이 구성으로 간주 될 수 있습니까? 이 접근법의 다른 결함은 무엇입니까?
편집 : 클래스
class Earning
{
int ID {get; set;}
Decimal Amount {get; set;}
DateTime Period {get; set;}
}
class Deduction
{
int ID {get; set;}
Decimal Amount {get; set;}
DateTime Period {get; set;}
String Remarks {get; set;}
}
그리고 임 다음과 같이 이러한 속성에 액세스하는 방법에 대한
자세한 내용 ... Program.cs에서
WageInfo WI= new WageInfo();
WI.E.Amount= 1000;
EDIT2 :
내 클래스의 관계는
WageInfo
Earnings
,
Deduction
들과
WageBalances
을 가질 수있다 ... 이런 식이다. 다음과 같이 그래서 내
PrepareEarnings()
WageManager
의 클래스는 객체 (여기 WageInfo)를 포함하는
가 완전히 객체 (E, D)를 포함
의 라이프 사이클을 제어 할 때 public List<Earning> PrepareEarnings(DateTime wagePeriodStartDate, DateTime wagePeriodEndDate)
{
return GetEarningsToList(wagePeriodStartDate,wagePeriodEndDate);
}
public List<Earning> GetEarningsToList(DateTime startDate, DateTime endDate)
{
return CalculateEarnings(startDate,endDate).Rows.OfType<DataRow>().Select(CreateEarnings).ToList();
}
private DataTable CalculateEarnings(DateTime startDate, DateTime endDate)
{
return _DataService.GetEarnings(startDate,endDate);
}
private Earning CreateEarnings(DataRow row)
{
WageInfo wageInfo = new WageInfo();
wageInfo.Earning.EmployeeID = row[0] == DBNull.Value ? 0 : Convert.ToInt32(row[0]);
wageInfo.Earning.WorkDays = row[2] == DBNull.Value ? 0 : Convert.ToInt32(row[2]);
//
return wageInfo.Earning;
}
잘 모르겠어요이 좋은 또는 나쁜 구조의 경우 말을 충분한 정보를 제공 한 경우. 내가 개인적으로 볼 수있는 것에서는 나빠 보이지 않습니다 ... –
이 모든 멤버는 비공개입니다. 그게 네가 필요한거야? –
예 이것은 구성으로 간주 될 수 있습니다. 결함 관련 : 반드시 나쁜 연습은 아니므로 이러한 유형의 초기화를 수행 할 수 있습니다. 또한 매개 변수 (예 : 익명 유형)를 전달할 수 있습니다. 이게 당신이 알고 싶은 것인지 확신 할 수 없기 때문에 주석 달기 ;-) – hschne