diff --git a/WF_EF_Api/Shared/Mapper.cs b/WF_EF_Api/Shared/Mapper.cs new file mode 100644 index 0000000..890c8d3 --- /dev/null +++ b/WF_EF_Api/Shared/Mapper.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shared +{ + public class Mapper where T : class + where U : class + { + readonly HashSet> mapper = new HashSet>(); + + public bool AddMapping(T t, U u) + { + var mapping = new Tuple(t, u); + if (mapper.Contains(mapping)) return false; + mapper.Add(mapping); + return true; + } + + public T? GetT(U u) + { + var result = mapper.Where(tuple => ReferenceEquals(tuple.Item2, u)); + if (result.Count() != 1) + { + return null; + } + return result.First().Item1; + } + + public U? GetU(T t) + { + var result = mapper.Where(tuple => ReferenceEquals(tuple.Item1, t)); + if (result.Count() != 1) + { + return null; + } + return result.First().Item2; + } + + public void Reset() + { + mapper.Clear(); + } + } +}