I have a class called WageInfo
and it has composition relationships with Earning
and Deduction
classes. So I implement this as follows...
class WageInfo
{
int ID {get; set;}
Earning E = new Earning();
Deduction D = new Deduction();
}
I know that I havent initialized these object inside the WageInfo
constructor so it is not possible to pass parameters to Earning
and Deduction's
constructors.
Other than that, can this be considered as composition? Any other flaws in this approach?
EDIT:
More details about classes
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;}
}
And Im accessing these properties as follows...
In Program.cs
WageInfo WI= new WageInfo();
WI.E.Amount= 1000;
EDIT2:
My class relationships are like this...
WageInfo
may have many Earnings
, Deduction
s and WageBalances
. So my PrepareEarnings()
in WageManager
class is as follows...
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;
}