Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. Bind<IUnitOfWork>().To<UnitOfWork>();
  2. Bind<ISomeService>().To<SomeService>();
  3.  
  4. class UnitOfWork : IUnitOfWork, IDisposable
  5. {
  6. public Dispose(){}
  7. }
  8.  
  9. // Это что то вроде GodObject (прим. фасад, методы которого, дергают кнопочки из WinForms, существует пока существует форма, )
  10. // IDisposable не реализует
  11. class SomeService : ISomeService
  12. {
  13. IUnitOfWork readonly _uow;
  14.  
  15. public SomeService(IUnitOfWork uow)
  16. {
  17. this._uow = uow;
  18. }
  19.  
  20. public void Method1()
  21. {
  22. this._uow.SomeAction1();
  23. }
  24.  
  25. public void Method2()
  26. {
  27. this._uow.SomeAction2();
  28. }
  29. }
  30.  
  31. Bind<IUnitOfWork>().To<UnitOfWork>(); // Здесь можно обозначить Scope, если реализации репозиториев зависят
  32. // от DbContext, и нужно сохранять один экземпляр на весь UnitOfWork
  33. // прим: Bind<IUnitOfWork>().To<UnitOfWork>().DefinesNamedScope("SingleDbContextScope");
  34. // а DbContext биндить так: Bind<SomeDbContext>().ToSelf().InNamedScope("SingleDbContextScope");
  35. Bind<IUnitOfWorkFactory>().ToFactory();
  36. Bind<ISomeService>().To<SomeService>();
  37.  
  38. // Это что то вроде GodObject (прим. фасад, методы которого, дергают кнопочки из WinForms, существует пока существует форма, )
  39. class SomeService : ISomeService
  40. {
  41. readonly IUnitOfWorkFactory _uowFuctory;
  42.  
  43. public SomeService(IUnitOfWorkFactory uowFuctory)
  44. {
  45. this._uowFuctory = uowFuctory;
  46. }
  47.  
  48. public void Method1()
  49. {
  50. using(var uow = _uowFuctory.Create())
  51. {
  52. this.uow.SomeAction1();
  53. }
  54. }
  55.  
  56. public void Method2()
  57. {
  58. using(var uow = _uowFuctory.Create())
  59. {
  60. this.uow.SomeAction2();
  61. }
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement