程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 反射學習系列2-特性(Attribute)(2)

反射學習系列2-特性(Attribute)(2)

編輯:關於C語言

特性也是一個Class類型,可以有多個構造函數,就像C#的new語句一樣,我們向類型附加特性時可以使用不同的初始化參數來指明使用特性的那個構造函數。我們附加特性時還可以使用“屬性名=屬性值”的方法來直接指明特性的屬性值。該特性中定義了一個TableName屬性,該屬性就是被修飾的對象所映射的數據庫表的名稱。

下面我們舉一個使用特性來進行O/RMapping的例子,也就是將對象轉化成Sql語句

用戶類:

User類

[Table("User")]
  public class User
  {
    [Colum("userID", DbType = DbType.Int32)]
    public int UserID { get; set; }
    [Colum("UserName", DbType = DbType.String)]
    public string UserName { get; set; }
  }

表特性

[AttributeUsageAttribute(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
  public class TableAttribute : Attribute
  {
    //保存表名的字段
    private string _tableName;

    public TableAttribute()
    {
    }

    public TableAttribute(string tableName)
    {
      this._tableName = tableName;
    }

    /// <summary>
    /// 映射的表名(表的全名:模式名.表名)
    /// </summary>
    public string TableName
    {
      set
      {
        this._tableName = value;
      }
      get
      {
        return this._tableName;
      }
    }
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved