/// <summary>
        /// 获取数据data的字段值
        /// <para>如果数据data实现接口IDataRowReader,则返回Item[name]</para>
        /// </summary>
        /// <param name="field"></param>
        /// <param name="data">要获取字段值的数据</param>
        /// <returns></returns>
        public static object GetModelFieldValue(this IDataFieldModel field, object data)
        {
            if (data is IDataRowReader)
            {
                IDataRowReader r = data as IDataRowReader;
                return(r[field.Name]);
            }
            PropertyDescriptor pd = DataModelHelper.GetExtendProerty_PropertyDescription(field.InnerExtend);

            if (pd != null)
            {
                return(pd.GetValue(data));
            }
            throw new ObjectIsNullException(LocalResource.FieldPropertyDescriptor);
        }
        /// <summary>
        /// 设置数据data的字段值为fieldvalue
        /// <para>如果data实现接口IDataRowSetter,则调用IDataRowSetter.SetFieldValue</para>
        /// </summary>
        /// <param name="field"></param>
        /// <param name="data">要设置值的数据</param>
        /// <param name="fieldvalue">要设置为的字段值</param>
        public static void SetModelFieldValue(this IDataFieldModel field, object data, object fieldvalue)
        {
            if (data is IDataRowSetter)
            {
                IDataRowSetter s = data as IDataRowSetter;
                s.SetFieldValue(field.Name, fieldvalue);
                return;
            }
            PropertyDescriptor pd = DataModelHelper.GetExtendProerty_PropertyDescription(field.InnerExtend);

            if (pd != null)
            {
                pd.SetValue(data, fieldvalue);
            }
            else
            {
                throw new ObjectIsNullException(LocalResource.FieldPropertyDescriptor);
            }
        }