namespace Utils { public class Mapper where T : class where U : class { readonly HashSet> mapper = new HashSet>(); public void Reset() { mapper.Clear(); } public T GetT(U entity) { var result = mapper.Where(tuple => ReferenceEquals(tuple.Item2, entity)); if (result.Count() != 1) { return null; } return result.First().Item1; } public U GetU(T model) { var result = mapper.Where(tuple => ReferenceEquals(tuple.Item2, model)); if (result.Count() != 1) { return null; } return result.First().Item2; } public bool AddMapping(T t, U u) { var mapping = new Tuple(t, u); if (mapper.Contains(mapping)) return false; mapper.Add(mapping); return true; } } }