/// <summary>
        /// Add
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="newValue"></param>
        /// <typeparam name="TObject"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <typeparam name="TValue"></typeparam>
        public void Add <TObject, TProperty, TValue>(Expression <Func <TObject, TProperty> > expression, TValue newValue)
            where TObject : IDomainObject
        {
            var name  = Lambdas.GetName(expression);
            var desc  = Reflections.GetDescription(Lambdas.GetMember(expression));
            var value = Lambdas.GetValue(expression);

            Add(name, desc, value.CastTo <TValue>(), newValue);
        }
        /// <summary>
        /// 添加描述
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <typeparam name="TProperty">属性类型</typeparam>
        /// <param name="expression">属性表达式,范例:t => t.Name</param>
        public void Add <T, TProperty>(Expression <Func <T, TProperty> > expression)
        {
            var member      = Lambdas.GetMember(expression);
            var description = Reflection.Reflections.GetDisplayNameOrDescription(member);
            var value       = member.GetPropertyValue(this);

            if (Reflection.Reflections.IsBool(member))
            {
                value = Conv.ToBool(value).Description();
            }
            Add(description, value);
        }