code_junkie

Accessing more than one data provider in a data layer

Nov 11th, 2011
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. ...
  2. IDaoFactory daoFactory = new NHibernateDaoFactory(); //instantiation in main class
  3. ...
  4. SamplePresenterClass s = new SamplePresenterClass(daoFactory);
  5. ...
  6.  
  7. List<string> LoadData(LoaderEnum key)
  8.  
  9. ILoader loader = new XMLLoader();
  10. SamplePresenterClass s = new SamplePresenterClass(daoFactory, xmlLoader);
  11.  
  12. SamplePresenterClass s = new SamplePresenterClass(daoFactory, xmlLoader, sampleWebServiceConnector1, sampleWebServiceConnector2, ...);
  13.  
  14. public class DataAccessHolder
  15. {
  16. private IDaoFactory daoFactory;
  17. private ILoader loader;
  18. ...
  19. public IDaoFactory DaoFactory
  20. {
  21. get { return daoFactory; }
  22. set { daoFactory = value; }
  23. }
  24. ...
  25. }
  26.  
  27. DataAccessHolder dataAccessHolder = new DataAccessHolder();
  28. dataAccessHolder.DaoFactory = new NHibernateDaoFactory();
  29. dataAccessHolder.Loader = new XMLLoader();
  30. ...
  31. SamplePresenterClass s = new SamplePresenterClass(dataAccessHolder);
  32.  
  33. DaoFactory<SamplePresenterClass>.Create(); // or
  34. DaoFactory<SamplePresenterClass>.Create(id); // etc
  35.  
  36. interface IDao
  37. {
  38. IDaoProvider GetProvider();
  39. }
  40.  
  41. interface IDaoProvider
  42. {
  43. IDao Create(IDao instance);
  44. void Update(IDao instance);
  45. void Delete(IDao instance);
  46. }
  47.  
  48. static class DaoFactory<T> where T : IDao, new()
  49. {
  50. static T Create()
  51. {
  52. T instance = new T();
  53. IDaoProvider provider = instance.GetProvider();
  54.  
  55. return (T)provider.Create(instance);
  56. }
  57. }
  58.  
  59. class Cat : IDao
  60. {
  61. IDaoProvider GetProvider()
  62. {
  63. return new XmlLoader(YourEnum.Cat);
  64. }
  65.  
  66. // ...
  67. }
Add Comment
Please, Sign In to add comment