I design simple DAL using Generic, i have 2 business objects matched to each other, one in BusLayer and the other in DAL.
DAL just deal with DAL.Domain.Categories
BusLayer see Business.BusinessObject.Categorie and DAL.Domain.Categories
DALProxy is a class in business layer and it the only class talk with DAL
in Business Layer when developer need to get a recored from DB , he will write the following:
public
Business.BusinessObject.Categorie GetCategorie(string primKey)
{
DALProxy proxy = new DALProxy("Connection string ....");
Business.BusinessObject.Categorie cat = proxy.GetRecord<Business.BusinessObject.Categorie, DAL.Domain.
Categories>(primKey);
Return cat;
}
Then GetRecord Method in DALProxy call DAL DAO
public
T GetRecord<T,U>(object key)
{
DAO dao = new DAO("");
T busObject = new T();
U domainObject = dao.GetRecord<U>(key);
// then map U to T before return T
T busObject = Mapper.Map(domainObject ,busObject );
return busObject ;
}
My Question is how to make Proxy.get Record take just T, not T and U.
i mean developer not need to know the matching Domain object and type it.
i need it to be implicit, and to be my problem is explained well i have a stupid solution:
in proxy getrecord i will check type of T, if it a type of Categories then Call DAO.getRecord<DAL.Domain.Categories>, so i will have 150 if statments for each busobject
any smart solution