Guest User

Untitled

a guest
Jan 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. public partial class CreateResult
  2. {
  3. public string Errors {get;set;}
  4. }
  5.  
  6. public interface ICreateService
  7. {
  8. Task<CreateResult> CreateAsync();
  9. }
  10.  
  11. public partial class UpdateResult
  12. {
  13. public string Errors {get;set;}
  14. }
  15.  
  16. public interface IUpdateService
  17. {
  18. Task<UpdateResult> UpdateAsync();
  19. }
  20.  
  21. public partial class DeleteResult
  22. {
  23. public string Errors {get;set;}
  24. }
  25.  
  26. public interface IDeleteService
  27. {
  28. Task<DeleteResult> DeleteAsync();
  29. }
  30.  
  31. public class Connector
  32. {
  33. private readonly ICreateService _createService;
  34. private readonly IUpdateService _updateService;
  35. private readonly IDeleteService _deleteService;
  36. private readonly Policy _policy = ???;
  37.  
  38. public Connector(ICreateService createService, IUpdateService updateService, IDeleteService deleteService)
  39. {
  40. _createService = createService;
  41. _updateService = updateService;
  42. _deleteService = deleteService;
  43. }
  44.  
  45. public async Task<CreateResult> CreateAsync()
  46. {
  47. // sample policy: var policy = Policy.Handle<Exception>()
  48. // .OrResult<CreateResult>(r => r.Errors.Contains("EXCEPTION"))
  49. // .Retry();
  50. // Now I need to create such a policy for every call. How can I create a single policy or a factory method to enforce DRY principle?
  51.  
  52. return _policy.ExecuteAsync(() => _createService.CreateAsync());
  53. }
  54.  
  55. public async Task<UpdateAsync> UpdateAsync()
  56. {
  57. return _policy.ExecuteAsync(() => _updateService.UpdateAsync());
  58. }
  59.  
  60. public async Task<DeleteResult> DeleteAsync()
  61. {
  62. return _policy.ExecuteAsync(() => _deleteService.DeleteAsync());
  63. }
  64. }
Add Comment
Please, Sign In to add comment