首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# Attribute特性應用實戰(三):反射讀取特性實現OR映射元數據驅動

     編輯:關於C語言

運行時反射讀取特性


class Program
{
    static void Main(string[] args)
    {
        var userInfo = new UserInfo();
        var type = userInfo.GetType();
        
        // 讀取類級別 TableAttribute
        var tableAttr = (TableAttribute)type.GetCustomAttributes(false)[0];
        Console.WriteLine($"數據表名:{tableAttr.TableName}");
        
        // 遍歷屬性讀取 ColumnAttribute
        foreach (var prop in type.GetProperties())
        {
            foreach (var attr in prop.GetCustomAttributes(false))
            {
                if (attr is ColumnAttribute colAttr)
                {
                    string colName = colAttr.ColumnName ?? prop.Name;
                    Console.WriteLine($"字段名:{colName}");
                    Console.WriteLine($"字段類型:{colAttr.DbType}");
                }
            }
        }
    }
}

運行結果示例

反射讀取特性輸出

輸出對應數據庫表名、字段名、字段類型,實現元數據驅動**的OR映射基礎。

核心API說明

  • Type.GetCustomAttributes(inherit):獲取類/結構/接口級特性。
  • PropertyInfo.GetCustomAttributes(inherit):獲取屬性級特性。
  • AttributeUsage控制特性作用目標(AttributeTargets.Property等)、是否可多次、是否繼承。

工程化建議

  1. 封裝AttributeReader工具類,統一異常處理與緩存。
  2. 支持inherit=true處理繼承鏈特性。
  3. 結合DisplayName/Description等標準特性豐富元數據。
  4. 生產環境建議使用成熟ORM(EF Core/Dapper),此為教學演示原理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved