程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎系列:實現自己的ORM(反射以及Attribute在ORM中的應用)(3)

C#基礎系列:實現自己的ORM(反射以及Attribute在ORM中的應用)(3)

編輯:關於C語言

二、Attribute的使用:

Attribute中文翻譯雖然也號稱“ 屬性”,但是她和對象的屬性(Property)其實是完全不同的兩概念。她 是在運行時對對象或者對象屬性、方法、委托等等進行描述的類,用於在運行時 描述你的代碼或者在運行時影響你的程序的行為。

其實我們在c#的編程 中經常看到Attribute,只不過我們沒有注意罷了。比如Main函數前的“ [STAThread]”這個其實就是一個Attribute。全程為 [STAThreadAttribute]。另外指定類可序列化的[Serializable]等等。是不是都 很熟悉啊?只不過平時估計沒有用到,所以沒有注意罷了。

既然 Attribute是類,那麼她的定義方法和類就沒有兩樣了,唯一的不同就是自定義 Attribute類必須繼承於System.Attribute。

下面我們來簡單定義一個描 述數據庫字段信息的Attribute,在此類中我們采用更省略的方式,僅僅提供 “字段名”,“字段類型”:

public class DataFIEldAttribute : Attribute
{
  private string _FIEldName;
  private string _FIEldType;
  public DataFieldAttribute(string fieldname, string fIEldtype)
  {
    this._FieldName = fIEldname;
    this._FieldType = fIEldtype;
  }
  public string FIEldName
  {
    get { return this._FIEldName; }
    set { this._FIEldName = value; }
  }
  public string FIEldType
  {
    get { return this._FIEldType; }
    set { this._FIEldType = value; }
  }
}

好,我們有了自己的描述數據庫字段的Attribute,那麼我們現 在將其應用到實際的類中。我們還是繼續上面的Person類,使用方法如下:

public class Person
{
  private string _Name;
  private int _Age;
  private string _Sex;
  [DataFIEldAttribute("name", "nvarchar")]
  public string Name
  {
    get { return this._Name; }
    set { this._Name = value; }
  }
  [DataFIEldAttribute("age", "int")]
   public int Age
  {
    get { return this._Age; }
    set { this._Age = value; }
  }
   [DataFIEldAttribute("sex", "nvarchar")]
   public string Sex
  {
    get { return this._Sex; }
    set { this._Sex = value; }
  }
}

通 過自定義Attribute,我們定義了類屬性和數據庫字段的一一對應關系,我們對 Person類的Name、Age、Sex屬性都加上了Attribute的描述,指定了他們對應的 字段名以及類型,其中Person.Name對應於字段name,字段類型Nvarchar...。

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