利用反射和自定義特性實現基本資料訪問操作自動獲取

2021-04-12 17:26:26 字數 2574 閱讀 1681

///

/// 提供自定義表特性

///

[attributeusage(attributetargets.class)]

class customtableattribute:attribute

public customtableattribute(string tablename)

: this(tablename, false, null)

public customtableattribute(string tablename, bool issubtable)

: this(tablename, issubtable, null)

public string tablename }

public string parenttablename }

public bool issubtable }

}///

/// 提供自定義列特性

///

[attributeusage(attributetargets.field|attributetargets.property)]

class customcolumnattribute : attribute

public customcolumnattribute(string columnname)

: this(columnname, false, false)

public customcolumnattribute(string columnname, bool ispk)

: this(columnname, ispk,false)

public string columnname }

public bool ispk }

public bool isidentity }

} ///

/// 提供基礎列抽象型別

///

class basecolumn

set }

public bool ispk set }

public bool isidentity set }

public type systype set }

public string coumnname set }

public dbtype datatype set }

public basecolumn(string columnname,object value,type systype, dbtype datatype,bool ispk,bool isidentity)

public basecolumn(string columnname)

: this(columnname, null,null, dbtype.string,false,false)

public basecolumn(string columnname, object value)

: this(columnname, value, null, dbtype.string, false, false)

public basecolumn(string columnname, object value, type systype)

: this(columnname, value, systype, dbtype.string, false, false)

public basecolumn(string columnname, object value, type systype, dbtype datatype)

: this(columnname,value, systype, datatype, false, false)

public basecolumn(string columnname, object value, type systype, dbtype datatype, bool ispk)

: this(columnname,value, systype, datatype, ispk, false)

}///

/// 提供資料訪問操作的基本實現

///

///

/// 示例資料表物件:**可由**生成器生成

///

[customtable("demotable")]

class datatable:basetable

private string _column1;

private string _column2;

private datetime _column3;

[customcolumn("col_1",true,false)]

public string column1

set

}[customcolumn("col_2")]

public string column2

set

}[customcolumn("col_3")]

public datetime column3

set

}       

}class program

{///

/// 執行程序

///

///

利用反射實現自定義比較器

解決方案 優化空間 問題背景 需求 從第三方獲取資料列表,傳到前台進行展示,目前前台需要可以根據任意字段進行排序 公升序和降序 但是第三方介面不支援排序功能,所以需要手動實現資料的排序。問題分析 方案一 資料入庫 方案二 根據字段進行排序 解決方案 思路資料列表的排序主要是針對欄位的比較器進行的,那...

利用特性給方法實現自定義的功能

最近,專案經理要求我做乙個記錄日誌的功能,就是當系統的當前使用者進行增刪改或者上傳檔案操作的時候,進行對操作人,操作,操作時間的記錄。他的建議是用特性去實現該功能。attribute的基本概念 首先,我們肯定attribute是乙個類,下面是msdn文件對它的描述 公共語言執行時允許你新增類似關鍵字...

自定義註解和反射例項

自定義註解和反射例項 author 這個例子是說實體和資料庫對應表的對映,可以在實體上面使用註解。public class tannotationclass 下面是備註接的類 class person 下面是自定義註解 target elementtype.field 註解是給屬性使用的 reten...