/// <summary>
        /// Saves an value under the key provided by their attribute
        /// supports: string, int, double, float, enum. (enum ist castet to ints)
        /// </summary>
        /// <param name="value"></param>
        /// <param name="Name"></param>
        protected void Set(object value, [CallerMemberName] string Name = "")
        {
            var Setting   = Settings?.FirstOrDefault(x => x.Name == Name);
            var Attribute = Setting?.GetCustomAttribute <SettingAttribute>(true);

            if (Setting.PropertyType.IsEnum)
            {
                value = Convert.ChangeType(value, typeof(int));
            }
            dynamic oldvalue = Convert.ChangeType(Setting.GetValue(this), Setting.PropertyType);

            switch (Attribute.Sync)
            {
            case SaveType.Roaming:
                PlatformSettings?.SetRoaming(Attribute.SaveString, value);
                break;

            case SaveType.Local:
                PlatformSettings?.SetLocal(Attribute.SaveString, value);
                break;

            default:
                break;
            }
            dynamic newvalue = Setting.PropertyType.IsEnum ? Enum.ToObject(Setting.PropertyType, value) : Convert.ChangeType(value, Setting.PropertyType);

            if (oldvalue != newvalue)
            {
                Instance.NotifyPropertyChanged(Name);
            }
        }