コード例 #1
0
        private void MapFieldAttributesToEntity(Entity entity)
        {
            foreach (var property in GetProperties(this))
            {
                var attribute    = EntityFieldAttribute(property);
                var value        = property.GetValue(this);
                var valueChanged = ChangedPropertyNames.Contains(property.Name);

                if (attribute == null || !valueChanged)
                {
                    continue;
                }

                if (attribute.Type == typeof(EntityReference) && value != null)
                {
                    entity[attribute.Name] = new EntityReference(attribute.Reference, (Guid)value);
                }
                else if (attribute.Type == typeof(OptionSetValue) && value != null)
                {
                    entity[attribute.Name] = new OptionSetValue((int)value);
                }
                else
                {
                    entity[attribute.Name] = value;
                }
            }
        }
コード例 #2
0
        protected void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            var excluded = _propertyNamesExcludedFromChangeTracking.Any(p => p == propertyName);

            if (_changeTrackingEnabled && !excluded)
            {
                ChangedPropertyNames.Add(propertyName);
            }
        }
コード例 #3
0
 internal void EndUpdate()
 {
     if (--UpdateCount == 0)
     {
         foreach (var propertyName in ChangedPropertyNames)
         {
             OnPropertyChanged(propertyName);
         }
         ChangedPropertyNames.Clear();
     }
 }