コード例 #1
0
        /// <summary>
        /// propertyName必须是数值类型的属性。注意:只支持int和double类型。
        /// 基于反射将给定类型对象的给定名称的属性值自减。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="vm"></param>
        /// <param name="propertyName"></param>
        public static void Down <T>(T vm, string propertyName) where T : ViewModelBase
        {
            Type type         = typeof(T);
            var  propertyInfo = type.GetProperty(propertyName);

            if (propertyInfo == null)
            {
                NTMinerConsole.DevError(() => $"类型{type.FullName}不具有名称为{propertyName}的属性");
                return;
            }
            if (propertyInfo.PropertyType == typeof(int))
            {
                int value = (int)propertyInfo.GetValue(vm, null);
                if (value > 0)
                {
                    propertyInfo.SetValue(vm, value - 1, null);
                }
            }
            else if (propertyInfo.PropertyType == typeof(double))
            {
                double value = (double)propertyInfo.GetValue(vm, null);
                if (value > 0.1)
                {
                    propertyInfo.SetValue(vm, Math.Round(value - 0.1, 2), null);
                }
            }
        }