public SiteSettingsPropertyValue(SiteSettingsProperty settings) { Settings = settings; }
public SiteSettingsPropertyValue(SiteSettingsProperty settings, object value) : this(settings) { this.value = value; }
private static string ConvertToString(SiteSettingsProperty property, object value) { return value == null ? String.Empty : value.ToString(); }
private static object ConvertFromBinary(SiteSettingsProperty property, byte[] data) { switch (Type.GetTypeCode(property.PropertyType)) { case TypeCode.Empty: return null; case TypeCode.Boolean: return BitConverter.ToBoolean(data, 0); case TypeCode.SByte: return (sbyte)BitConverter.ToChar(data, 0); case TypeCode.Char: return BitConverter.ToChar(data, 0); case TypeCode.Byte: return (byte)BitConverter.ToChar(data, 0); case TypeCode.UInt16: return BitConverter.ToUInt16(data, 0); case TypeCode.UInt32: return BitConverter.ToUInt32(data, 0); case TypeCode.Int32: return BitConverter.ToInt32(data, 0); case TypeCode.UInt64: return BitConverter.ToUInt64(data, 0); case TypeCode.Int64: return BitConverter.ToInt64(data, 0); default: throw new InvalidCastException(); } }
private static object ConvertFromXml(SiteSettingsProperty property, byte[] data) { using (var reader = new StreamReader(new MemoryStream(data))) { var serializer = new XmlSerializer(property.PropertyType); return serializer.Deserialize(reader); } }
private static object ConvertFromString(SiteSettingsProperty property, byte[] data) { var str = Encoding.UTF8.GetString(data); if (typeof(string) == property.PropertyType) { return str; } var converter = TypeDescriptor.GetConverter(property.PropertyType); return converter.ConvertFromString(str); }
private static object MaterializeValue(SiteSettingsProperty property, byte[] data) { if (property == null) { throw new ArgumentNullException(nameof(property)); } switch (property.SerializeAs) { case SerializationType.String: return ConvertFromString(property, data); case SerializationType.Xml: return ConvertFromXml(property, data); case SerializationType.Binary: return ConvertFromBinary(property, data); } throw new InvalidOperationException(); }