I am trying to create a class that performs all kinds of low-level database related activities, but is a really simple interface for the user interface layer.
This class is a collection of data, everything inside a specific aggregate root, obtained by a single int identifier.
The constructor takes four parameters:
public AssetRegister(int caseNumber, ILawbaseAssetRepository lawbaseAssetRepository, IAssetChecklistKctcPartRepository assetChecklistKctcPartRepository, User user)
{
_caseNumber = caseNumber;
_lawbaseAssetRepository = lawbaseAssetRepository;
_assetChecklistKctcPartRepository = assetChecklistKctcPartRepository;
_user = user;
LoadChecklists();
}
The user interface layer accesses this class through the interface IAssetRegister. Castle Windsor can independently provide the ILawbaseAssetRepository and IAssetChecklistKctcPartRepository parameters, but the UI code must supply the other two using an anonymous type, for example:
int caseNumber = 1000;
User user = GetUserFromPage();
IAssetRegister assetRegister = Moose.Application.WindsorContainer.Resolve<IAssetRegister>(new { caseNumber, user});
API . , IAssetRegister . , .
, - . - ?