Exemplo n.º 1
0
        public IEnumerable <IBaseElement> GetChildren()
        {
            var listOfProperties = EncapsulatedDto?.GetType().GetRuntimeProperties();

            if (Children.Count == 0 && listOfProperties != null)
            {
                foreach (var property in listOfProperties)
                {
                    AttributeList = property.GetCustomAttributes(true)?.ToList();

                    var rawName = property.Name;
                    var value   = GetPropertyValue(property);
                    var child   = CreateBaseElement(property.PropertyType, rawName, value);
                    if (child != null)
                    {
                        child.IsIgnored     = HasIgnore(rawName);
                        child.AttributeName = GetCustomPropertyName(rawName);
                        Children.Add(child);
                    }
                }
            }

            //reorder
            if (Order != null)
            {
                ReorderChildren();
            }

            return(Children);
        }
Exemplo n.º 2
0
        protected void HandlePropertyChanged(object sender, PropertyChangedEventArgs a)
        {
            var castedSender = (IValueElement)sender;
            var data         = castedSender.GetPropertyValue("Data");

            if (castedSender.PropertyType == typeof(DateTime))
            {
                HandleDateTimeOffsetChange(castedSender);
            }
            else
            {
                EncapsulatedDto.SetPropertyValue(castedSender.RawName, data);
            }
        }
Exemplo n.º 3
0
        private void HandleDateTimeOffsetChange(IValueElement castedSender)
        {
            var castedSenderDateTime = (ValueElementDateTime)castedSender;

            if (castedSenderDateTime.IsDateTimeOffset)
            {
                var            utcTime1 = DateTime.SpecifyKind(castedSenderDateTime.Data, DateTimeKind.Utc);
                DateTimeOffset utcTime2 = utcTime1;
                EncapsulatedDto.SetPropertyValue(castedSender.RawName, utcTime2);
            }
            else
            {
                EncapsulatedDto.SetPropertyValue(castedSender.RawName, castedSenderDateTime.Data);
            }
        }