using System; using Kreta.Ellenorzo.Domain.VN.Interfaces; namespace Kreta.Ellenorzo.Domain.VN.Logic { /// /// Author: Kovács Kornél (DevKornél) Created On: 2019.07. /// public static class UidLogic { public static T GetUid(string uidRaw, Converter uidConverter) where T : class, IReadonlyUidRaw { if (string.IsNullOrWhiteSpace(uidRaw)) { return null; } string[] compositeKey = uidRaw.Split(Constant.UidInnerDelimiter); T uid = uidConverter.Invoke(compositeKey); return uid; } public static string[] GetCompositeKeyElements(string uidRaw) => string.IsNullOrWhiteSpace(uidRaw) ? null : uidRaw.Split(Constant.UidInnerDelimiter); public static string Concat(params object[] compositeKeyElements) { for (int i = 0; i < compositeKeyElements.Length; i++) { if (compositeKeyElements[i] == null) { compositeKeyElements[i] = Constant.UidNullValue; } else if (string.IsNullOrWhiteSpace(compositeKeyElements[i].ToString())) { compositeKeyElements[i] = Constant.UidNanValue; } } return string.Join(Constant.UidInnerDelimiter.ToString(), compositeKeyElements); } } }