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

五分鐘完全弄懂C#特性

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

[[403900]]

前言

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

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

特性(Attribute)的名稱(chēng)和值是在方括號(hào)內(nèi)規(guī)定的,放置在它所應(yīng)用的元素之前。positional_parameters 規(guī)定必需的信息,name_parameter 規(guī)定可選的信息。

特性的定義

特性的定義:直接或者間接的繼承 Attribute 類(lèi)

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

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

特性的使用

特性本身是沒(méi)有啥用,但是可以通過(guò)反射來(lái)使用,增加功能,不會(huì)破壞原有的封裝 通過(guò)反射,發(fā)現(xiàn)特性 --實(shí)例化特性--使用特性 通過(guò)特性獲取表名(orm)就是一個(gè)很好的案例

首先定義個(gè)類(lèi),假裝和數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)一樣,但表明是t_student 可以通過(guò)兩個(gè)方法來(lái)獲取表名(方法1加字段,或者擴(kuò)展方法tostring,但都破壞了以前的封裝,不提倡這樣做),然后就用到今天學(xué)習(xí)的特性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.    } 

在定義特性類(lèi)TableNameAttribute

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

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

實(shí)現(xiàn)特性的擴(kuò)展方法

  1. //通過(guò)反射獲取表名 
  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執(zhí)行,查看運(yùn)行結(jié)果

 

總結(jié)

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

 

責(zé)任編輯:武曉燕 來(lái)源: CSharp編程大全
相關(guān)推薦

2009-11-05 10:55:22

Visual Stud

2013-12-11 10:00:14

C++新特性C

2020-04-03 18:46:27

IPv6互聯(lián)網(wǎng)IPv4

2024-12-11 07:00:00

面向?qū)ο?/a>代碼

2025-03-13 06:22:59

2009-11-16 10:53:30

Oracle Hint

2020-06-16 08:47:53

磁盤(pán)

2020-12-17 10:00:16

Python協(xié)程線程

2019-08-09 10:33:36

開(kāi)發(fā)技能代碼

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

2021-10-19 07:27:08

HTTP代理網(wǎng)絡(luò)

2009-11-05 14:53:54

Visual Stud

2009-11-16 09:53:56

PHP上傳類(lèi)

2023-07-23 18:47:59

Docker開(kāi)源

2021-12-01 06:50:50

Docker底層原理

2022-12-16 09:55:50

網(wǎng)絡(luò)架構(gòu)OSI

2025-01-21 07:39:04

Linux堆內(nèi)存Golang
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩三区 | 青青草久久 | 中文字幕 在线观看 | 91精品久久 | 黄色av免费网站 | 欧美极品在线观看 | 国产在线播放一区二区三区 | 欧美高清视频一区 | 免费一级片 | 色一级片| 亚洲精品久久国产高清情趣图文 | 男人视频网站 | 免费黄色的视频 | 久久久久久久av | 天天操夜夜拍 | 亚洲国产精品久久人人爱 | 日韩一区二区在线视频 | 免费看黄色国产 | 精品久久久久久久久久久久 | 亚洲午夜视频 | 亭亭五月激情 | 亚洲一区二区视频在线播放 | 欧美精品91爱爱 | 国产欧美在线播放 | 欧美日韩国产三级 | 午夜免费在线观看 | 亚洲免费在线视频 | 免费观看毛片 | 精品一区二区电影 | 日韩a视频| 国产精品18hdxxxⅹ在线 | 欧美国产精品一区二区三区 | 黄色网址在线免费观看 | 欧区一欧区二欧区三免费 | 国产精品日韩在线 | 亚洲精品视频在线看 | 日本福利视频 | 福利社午夜影院 | 人人射人人草 | 午夜网 | 久久国产精品免费一区二区三区 |