经过两天修正,足够稳定,发布0204,希望作为LTS版本
大石头 编写于 2020-02-04 22:44:36
X
using System;
using System.Xml.Serialization;
using NewLife.Reflection;

namespace NewLife.Data
{
    /// <summary>数据行</summary>
    public struct DbRow : IIndexAccessor
    {
        #region 属性
        /// <summary>数据表</summary>
        [XmlIgnore]
        public DbTable Table { get; set; }

        /// <summary>行索引</summary>
        public Int32 Index { get; set; }
        #endregion

        #region 构造
        /// <summary>构造数据行</summary>
        /// <param name="table"></param>
        /// <param name="index"></param>
        public DbRow(DbTable table, Int32 index)
        {
            Table = table;
            Index = index;
        }
        #endregion

        #region 索引器
        /// <summary>基于列索引访问</summary>
        /// <param name="column"></param>
        /// <returns></returns>
        public Object this[Int32 column] { get => Table.Rows[Index][column]; set => Table.Rows[Index][column] = value; }

        /// <summary>基于列名访问</summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public Object this[String name] { get => this[Table.GetColumn(name)]; set => this[Table.GetColumn(name)] = value; }
        #endregion

        #region 高级扩展
        /// <summary>读取指定行的字段值</summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <returns></returns>
        public T Get<T>(String name) => Table.Get<T>(Index, name);
        #endregion
    }
}