TipoMovimientoHisserie.cs
1 using System;
2 
3 namespace sage.ew.serie.PoC
4 {
5  internal class TipoMovimientoHisserie : IEquatable<TipoMovimientoHisserie>
6  {
7  public readonly string _Movimiento;
8 
9  public static TipoMovimientoHisserie Alta
10  {
11  get { return new TipoMovimientoHisserie("A"); }
12  }
13 
14  public static TipoMovimientoHisserie Baja
15  {
16  get { return new TipoMovimientoHisserie("B"); }
17  }
18 
19  public static TipoMovimientoHisserie Modificacion
20  {
21  get { return new TipoMovimientoHisserie("M"); }
22  }
23 
24  public static TipoMovimientoHisserie Eliminacion
25  {
26  get { return new TipoMovimientoHisserie("X"); }
27  }
28 
29  #region Constructores
30 
31  private TipoMovimientoHisserie() { }
32 
33  private TipoMovimientoHisserie(string movimiento) : this()
34  {
35  _Movimiento = movimiento;
36  }
37 
38  #endregion Constructores
39 
40  #region Métodos públicos
41 
47  public bool Equals(TipoMovimientoHisserie other)
48  {
49  return _Movimiento.Equals(other._Movimiento);
50  }
51 
56  public override string ToString()
57  {
58  return _Movimiento;
59  }
60 
61  public static TipoMovimientoHisserie FromString(string mov)
62  {
63  switch (mov)
64  {
65  case "A":
66  return Alta;
67  case "B":
68  return Baja;
69  case "M":
70  return Modificacion;
71  case "X":
72  return Eliminacion;
73  default:
74  throw new NotImplementedException($"Tipo movimiento hisserie {mov} no reconocido");
75  }
76  }
77 
78  #endregion Métodos públicos
79  }
80 }