コード例 #1
0
        private Dto GetPatchItemAsync(string[] keyNames, Dto dataChanged, Dto dataOriginal)
        {
            var patchItem  = new Dto();
            var hasChanges = false;

            foreach (var item in dataChanged)
            {
                hasChanges = false;
                if (dataOriginal.ContainsKey(item.Key) && dataChanged.ContainsKey(item.Key))
                {
                    if (dataOriginal[item.Key].GetType() == typeof(DateTime) && dataChanged[item.Key].GetType() == typeof(DateTime))
                    {
                        hasChanges = ((DateTime)dataOriginal[item.Key]).Date != ((DateTime)dataChanged[item.Key]).Date;
                    }
                    else
                    {
                        hasChanges = hasChanges = (dataOriginal[item.Key] != dataChanged[item.Key]);
                    }
                    if (hasChanges && keyNames.Contains(item.Key))
                    {
                        patchItem[item.Key] = dataChanged[item.Key];
                    }
                }
            }
            return(patchItem);
        }
コード例 #2
0
 public static Dto Extend(Dto target, Dto source, bool onlyExistingProperties = false)
 {
     foreach (var prop in source)
     {
         if (!(onlyExistingProperties && target.ContainsKey(prop.Key)))
         {
             target[prop.Key] = prop.Value;
         }
     }
     return(target);
 }
コード例 #3
0
        public static Dto GetKeyFromData(string[] keyNames, Dto dto)
        {
            var result = new Dto();

            foreach (var keyName in keyNames)
            {
                if (dto.ContainsKey(keyName))
                {
                    result[keyName] = dto[keyName];
                }
                else
                {
                    throw new Exception("Invalid dto");
                }
            }
            return(result);
        }