Guest User

Untitled

a guest
Jun 28th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. /*
  5. * public data class LoginResource
  6. * {
  7. * public string Username { get; }
  8. * public string Password { get; }
  9. * public bool RememberMe { get; } = true;
  10. * }
  11. */
  12. public sealed class LoginResource : IEquatable<LoginResource> {
  13. public struct Builder
  14. {
  15. public string Username;
  16. public string Password;
  17. public bool RememberMe;
  18. }
  19.  
  20. public static void Init(ref Builder builder)
  21. {
  22. builder.RememberMe = true;
  23. }
  24.  
  25. private readonly Builder _builder;
  26.  
  27. public LoginResource(Builder builder) => _builder = builder;
  28.  
  29. public string Username => _builder.Username;
  30. public string Password => _builder.Password;
  31. public bool RememberMe => _builder.RememberMe;
  32.  
  33. public override bool Equals(object obj)
  34. {
  35. return Equals(obj as LoginResource);
  36. }
  37.  
  38. public bool Equals(LoginResource that)
  39. {
  40. if (that is null) return false;
  41.  
  42. var eq1 = EqualityComparer<string>.Default;
  43. return eq1.Equals(Username, that.Username)
  44. && eq1.Equals(this.Password, that.Password)
  45. && this.RememberMe == that.RememberMe;
  46. }
  47.  
  48. public override int GetHashCode()
  49. {
  50. var eq1 = EqualityComparer<string>.Default;
  51. var hashCode = -736459255;
  52. hashCode = hashCode * -1521134295 + eq1.GetHashCode(Username);
  53. hashCode = hashCode * -1521134295 + eq1.GetHashCode(Password);
  54. hashCode = hashCode * -1521134295 + RememberMe.GetHashCode();
  55. return hashCode;
  56. }
  57.  
  58. public override string ToString()
  59. {
  60. return $"{{{nameof(Username)} = {Username}, {nameof(Password)} = {Password}, {nameof(RememberMe)} = {RememberMe}}}";
  61. }
  62.  
  63. public static bool operator ==(LoginResource x, LoginResource y) {
  64. return x is LoginResource @this && @this.Equals(x);
  65. }
  66.  
  67. public static bool operator !=(LoginResource x, LoginResource y) {
  68. return !(x == y);
  69. }
  70. }
Add Comment
Please, Sign In to add comment