成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘完全弄懂C#特性

開發 后端
在工作或者學習中,難免或多或少的接觸到特性這個東西,可能你不太清楚什么是特性,那么我給大家舉兩個例子 [Obsolete],[HttpGet],[HttpPost],[Serizlized],[AuthorizeFilter] (總有你見過的一個吧) 。

[[403900]]

前言

在工作或者學習中,難免或多或少的接觸到特性這個東西,可能你不太清楚什么是特性,那么我給大家舉兩個例子 [Obsolete],[HttpGet],[HttpPost],[Serizlized],[AuthorizeFilter] (總有你見過的一個吧) 。有沒有覺得好熟悉,下面跟著小趙一探究竟。

特性(Attribute)用于添加元數據,如編譯器指令和注釋、描述、方法、類等其他信息。

特性(Attribute)的名稱和值是在方括號內規定的,放置在它所應用的元素之前。positional_parameters 規定必需的信息,name_parameter 規定可選的信息。

特性的定義

特性的定義:直接或者間接的繼承 Attribute 類

定義完就直接可以在方法前面用 [CustomAttribute] 可以省略 Attribute 寫成[Custom]

在特性類上面的特性 /// AttributeTargets.All --可以修飾的應用屬性 /// AllowMultiple = true ---是否可以進行多次修飾 [AttributeUsage(AttributeTargets.All,AllowMultiple = true)]圖片

特性的使用

特性本身是沒有啥用,但是可以通過反射來使用,增加功能,不會破壞原有的封裝 通過反射,發現特性 --實例化特性--使用特性 通過特性獲取表名(orm)就是一個很好的案例

首先定義個類,假裝和數據庫中的表結構一樣,但表明是t_student 可以通過兩個方法來獲取表名(方法1加字段,或者擴展方法tostring,但都破壞了以前的封裝,不提倡這樣做),然后就用到今天學習的特性attribute了

  1. public class Student 
  2.    { 
  3.         //public static string tablename = "t_student"
  4.        //public string tostring() 
  5.        //{ 
  6.        //    return "t_student"
  7.        //} 
  8.        public  int id { get; set; } 
  9.        public string Name { get; set; } 
  10.        public int Sex { get; set; } 
  11.    } 

在定義特性類TableNameAttribute

  1. //1.聲明 
  2.      public  class TableNameAttribute:Attribute 
  3.      { 
  4.          private string _name = null
  5.          //初始化構造函數 
  6.         public  TableNameAttribute(string tablename) 
  7.         { 
  8.             this._name = tablename; 
  9.         } 
  10.  
  11.         public string GetTableName() 
  12.         { 
  13.             return this._name; 
  14.         } 
  15.      } 

然后再student前面加上自定義特性

實現特性的擴展方法

  1. //通過反射獲取表名 
  2.        public static string GetName(Type type) 
  3.        { 
  4.            if (type.IsDefined(typeof(TableNameAttribute),true)) 
  5.            { 
  6.                TableNameAttribute attribute =(TableNameAttribute)type.GetCustomAttribute(typeof(TableNameAttribute), true); 
  7.  
  8.                return attribute.GetTableName(); 
  9.            } 
  10.            else 
  11.            { 
  12.              return  type.Name
  13.            } 
  14.        } 

F5執行,查看運行結果

 

總結

特性本身是沒有啥用,但是可以通過反射來使用,增加功能,不會破壞原有的封裝 項目我放在我的github[1]https://github.com/PrideJoy/NetTemple/tree/master/%E7%89%B9%E6%80%A7

 

責任編輯:武曉燕 來源: CSharp編程大全
相關推薦

2009-11-05 10:55:22

Visual Stud

2013-12-11 10:00:14

C++新特性C

2020-04-03 18:46:27

IPv6互聯網IPv4

2020-06-16 08:47:53

磁盤

2024-12-11 07:00:00

面向對象代碼

2009-11-16 10:53:30

Oracle Hint

2025-03-13 06:22:59

2020-12-17 10:00:16

Python協程線程

2009-11-16 09:53:56

PHP上傳類

2023-07-23 18:47:59

Docker開源

2021-12-01 06:50:50

Docker底層原理

2025-01-21 07:39:04

Linux堆內存Golang

2009-11-17 14:50:50

Oracle調優

2023-09-07 23:52:50

Flink代碼

2022-12-16 09:55:50

網絡架構OSI

2019-08-09 10:33:36

開發技能代碼

2021-06-07 09:51:22

原型模式序列化

2009-10-22 16:18:19

Oracle表空間

2025-01-20 08:50:00

2024-09-18 08:21:24

JavaScriptTypeScriptprototype
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 性天堂网 | 日韩综合在线视频 | www.天天操.com | 欧美日韩久久 | 亚洲电影一区二区三区 | 色综合99 | 久久三区 | jlzzjlzz欧美大全 | 成人一区二区三区在线观看 | 毛片区 | 日韩亚洲一区二区 | 欧美老妇交乱视频 | 久久国产综合 | 亚州春色 | 日本在线看片 | 99国产精品视频免费观看一公开 | 欧美日韩中文在线 | 中文在线a在线 | 久久国产成人午夜av影院武则天 | www97影院| 国产欧美精品 | 在线婷婷 | 视频在线h| 国产丝袜一区二区三区免费视频 | 国产精品精品视频一区二区三区 | 天天影视色综合 | 日韩成人高清 | 免费成人高清在线视频 | 免费三级黄 | 国产精品久久久久久吹潮 | 超碰97干| 午夜视频一区二区 | 人妖av | 天天色天天色 | 亚洲国产精品日本 | 欧美三区 | 日韩精品1区2区3区 成人黄页在线观看 | a级片网站| 日本天堂视频在线观看 | 成人a视频片观看免费 | 91免费看片 |