Esempio n. 1
0
        public object GetClrValue(Type propertyType, string propertyValueString)
        {
            if (!(propertyType.GetTypeInfo()
                  .IsAssignableFrom(propertyValueString.GetType().GetTypeInfo())))
            {
                TypeConverter converter = null;

                converter = typeConverterProvider.GetConverterFromProperty(propertyValueString, propertyType);

                if (converter == null)
                {
                    converter = typeConverterProvider.GetConverter(propertyType);
                }
                if (converter != null)
                {
                    return(converter.ConvertFromInvariantString(propertyValueString));
                }

                else if (propertyType == typeof(bool))
                {
                    return(propertyValueString.Equals("true"));
                }
                else if (propertyType == typeof(Color))
                {
                    return(Color.FromHex(propertyValueString as string));
                }
                else if (propertyType == typeof(LayoutOptions))
                {
                    return(propertyType.GetFieldReliable(propertyValueString).GetValue(null));
                }
                else if (propertyType.GetTypeInfo().IsEnum)
                {
                    return(Enum.Parse(propertyType, propertyValueString as string));
                }
                else
                {
                    return(Convert.ChangeType(propertyValueString, propertyType));
                }
            }

            return(propertyValueString);
        }
        public object GetBindablePropertyValue(Type frameworkElementType, BindableProperty bindableProperty, object propertyValue)
        {
            if (!(bindableProperty.ReturnType.GetTypeInfo()
                  .IsAssignableFrom(propertyValue.GetType().GetTypeInfo())))
            {
                Type          propertyType = bindableProperty.ReturnType;
                TypeConverter converter    = null;

                converter = typeConverterProvider.GetConverterFromProperty(bindableProperty.PropertyName, frameworkElementType);

                if (converter == null)
                {
                    converter = typeConverterProvider.GetConverter(propertyType);
                }
                if (converter != null)
                {
                    propertyValue = converter.ConvertFromInvariantString(propertyValue as string);
                }

                else if (propertyType == typeof(bool))
                {
                    propertyValue = propertyValue.Equals("true");
                }
                else if (propertyType == typeof(Color))
                {
                    propertyValue = Color.FromHex(propertyValue as string);
                }
                else if (propertyType == typeof(LayoutOptions))
                {
                    propertyValue = propertyType.GetRuntimeFields().First(x => x.Name == propertyValue as string).GetValue(null);
                }
                else if (propertyType.GetTypeInfo().IsEnum)
                {
                    propertyValue = Enum.Parse(propertyType, propertyValue as string);
                }
                else
                {
                    propertyValue = Convert.ChangeType(propertyValue, propertyType);
                }
            }

            return(propertyValue);
        }