精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文說通C#的屬性Attribute

開發 后端
屬性Attributes在C#中很常用,但事實上很多人對這個東西又很陌生。從概念上講,屬性提供的是將元數據關系到元素的一種方式。

[[392994]]

一、屬性

屬性Attributes在C#中很常用,但事實上很多人對這個東西又很陌生。

從概念上講,屬性提供的是將元數據關系到元素的一種方式。

屬性使用的樣子,應該都見過:

  1. [Flags] //Attribute 
  2. public enum DayOfWeek 
  3.     Sunday = 1, 
  4.     Monday = 2, 
  5.     Tuesday = 4, 
  6.     Wednesday = 8, 
  7.     Thursday = 16, 
  8.     Friday = 32, 
  9.     Saturday = 64 

代碼中,Flags就是一個屬性。

通常,屬性會放在類、字段、方法等定義的上面,用來指定特定的內容。

.Net Framework框架提供了一些屬性。像常見的Serializable,用來告訴編譯器當前的類可以序列化成JSON或XML:

  1. [Serializable
  2. public class SerializableClass { /*...*/ } 

需要注意的是,屬性在編譯時會嵌入到程序集中。這樣,我們可以使用反射來獲得相應的屬性值。

二、自定義屬性

自定義屬性用處很大,算是我自己比較常用的一個技術。

自定義屬性需要從System.Attribute抽象類來繼承。

想象一個場景。我們在構建一個手機類。我們需要一個屬性來表示手機一些信息,比方口牌和生產年份:

  1. public class MobileInformationAttribute : Attribute 
  2.     public string brand { get; set; } 
  3.     public int yearOfProduct { get; set; } 
  4.  
  5.     public MobileInformationAttribute(string Brand, int YearOfProduct) 
  6.     { 
  7.         brand = Brand; 
  8.         yearOfProduct = YearOfProduct; 
  9.     } 

我們會注意到:屬性是一個類,和其它類一樣,擁有字段、方法、構造函數和其它成員。

三、使用屬性

前面說了,屬性可以放在類、字段、方法等定義的上面。

我們來看看上面這個自定義屬性的使用:

  1. [MobileInformation("Apple", 2021)] 
  2. public class IPhone12 { /*...*/ } 

這兒需要注意一下:對于自定義屬性的名字,如果我們采用xxx+Attribute的名稱,則使用時我們可以用短名稱xxx。否則,就需要使用完整的名稱:

  1. public class abc : Attribute { /*...*/ } 
  2.  
  3. [abc("Apple", 2021)] 
  4. public class IPhone12 { /*...*/ } 

四、限制屬性

屬性本身也是一個類。所以屬性也可以用屬性來指定和修飾。

在修飾屬性的屬性中,有一個框架中的屬性用的很多,就是AttributeUsage。這個屬性用來限制自定義屬性可以修飾的元素類型:

  1. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)] 
  2. public class MobileInformationAttribute : Attribute { /*...*/ } 

AttributeTargets是一個枚舉,有很多選項,包括類、接口、方法、構造函數、枚舉、程序集等。

上邊的代碼,我們限定了屬性只用于指定和修飾類和接口。所以,如果用這個屬性來修飾一個字段,編譯器會報錯。

AttributeUsage還允許我們定義從修飾對象繼承的對象,是否也獲得屬性:

  1. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, Inherited = true)] 
  2. public class MobileInformationAttribute : Attribute { /*...*/ } 

以及該屬性是否可以在一個元素上有多個實例:

  1. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)] 
  2. public class MobileInformationAttribute : Attribute { /*...*/ } 

五、訪問屬性

有了屬性,怎么訪問呢?

框架提供了一個方法Attribute.GetCustomAttribute():

  1. var mobileType = typeof(IPhone12); 
  2. var attributeType = typeof(MobileInformationAttribute); 
  3. var attribute = (MobileInformationAttribute)Attribute.GetCustomAttribute(mobileType, attributeType); 
  4. Console.WriteLine($"Mobile is {attribute.brand} {attribute.yearOfProduct}"); 

六、反射訪問

反射最主要的作用,是用來收集對象的數據,而不是對象本身的數據。這些數據包括對象的類型,以及關于對象成員(包括方法、屬性、構造函數)的信息,和關于特定程序集的信息。此外,還包括存儲在元素屬性中的任何信息。

最簡單的反射,就是GetType()方法。

  1. int myInt = 5; 
  2. Type type = myInt.GetType(); 
  3. Console.WriteLine(type); 

除此之外,我們還可以使用反射來獲取關于包含給定類型的程序集的信息:

  1. Assembly assembly = typeof(DateTime).Assembly; 
  2. Console.WriteLine(assembly); 
  3.  
  4. Assembly mobileAssembly = typeof(IPhone12).Assembly; 
  5. Console.WriteLine(mobileAssembly); 

關于反射的內容,不展開討論。

這兒說的,是通過反射獲取類中方法的信息:

  1. public class ReflectedClass 
  2.     public string Property1 { get; set; } 
  3.  
  4.     public int Add(int firstint second
  5.     { 
  6.         return first + second
  7.     } 
  8.  
  9. ReflectedClass reflected = new ReflectedClass(); 
  10. MemberInfo member = reflected.GetType().GetMethod("Add"); 
  11. Console.WriteLine(member); //Int32 Add(Int32, Int32) 

同樣,還可能通過反射獲得關于已定義的屬性的信息,以及關于對象的構造函數的信息:

  1. PropertyInfo property = reflected.GetType().GetProperty("Property1"); 
  2. Console.WriteLine(property); //System.String Property1 
  3.  
  4. ConstructorInfo constructor = reflected.GetType().GetConstructor(new Type[0]); 
  5. Console.WriteLine(constructor); //Void .ctor() 

七、使用反射創建實例

這個需要用到system.Activator。這是一個非常強大的類,可以從類型創建對象的實例。

來看看這個方法的使用:

  1. ReflectedClass newReflected = new ReflectedClass(); 
  2.  
  3. var reflectedType = newReflected.GetType(); 
  4.  
  5. object newObject = Activator.CreateInstance(reflectedType); 
  6. Console.WriteLine(newObject); 

八、使用反射處理泛型

使用反射處理泛型會比處理普通類型麻煩一點。

這里需要知道,Type類上有一個屬性用來標識類型是不是泛型:

  1. List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7 }; 
  2. Console.WriteLine(numbers.GetType().IsGenericType); 

同樣,我們也可以用反射來創建一個泛型的實例:

  1. List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7 }; 
  2.  
  3. Type d = numbers.GetType().GetGenericTypeDefinition(); 
  4.  
  5. Type[] typeArgs = new Type[] { typeof(int) }; 
  6.  
  7. Type constructed = d.MakeGenericType(typeArgs); 
  8.  
  9. object list = Activator.CreateInstance(constructed); 
  10.  
  11. Console.WriteLine(list.GetType()); 

有一點復雜,但可以實現。

九、總結

寫得好像有點亂。

總結一下,屬性將元數據分配給元素,包括類、字段、方法等等。該元數據在構建項目時被編譯,并描述元素,而不是元素的數據。

可以創建從Attribute類繼承的自定義屬性。可以使用AttributeUsage屬性來限制這些屬性的使用位置,并且可以使用反射來獲取屬性數據。

反射是一種技術,允許獲取關于元素(而不是元素本身)的元數據和信息。執行反射的最基本方法是使用GetType()方法,但是也可以使用反射來獲取關于方法、構造函數、字段等的信息。

 

可以使用反射來創建對象的實例,只要有了對象的類型。同時,使用反射創建泛型對象是可能的,但比較復雜,需要泛型對象的類型以及所有泛型參數的類型。

 

責任編輯:武曉燕 來源: 老王Plus
相關推薦

2021-09-15 06:55:34

異步LinqC#

2021-01-27 08:12:04

Dotnet函數數據

2022-04-28 10:41:08

SaaS業務方式

2019-11-12 15:11:45

秒殺流量高可用

2021-07-31 23:14:26

OpenCL框架語言

2021-12-15 09:32:41

Linux系統負載

2025-04-22 08:57:27

2018-05-22 10:09:09

數據庫MySQL優化原理

2024-04-28 08:14:29

C#隊列Queue

2024-05-30 08:05:17

2019-01-29 09:36:10

MySQLACID特性

2020-05-11 07:57:33

區塊鏈分布式鏈上

2023-01-26 01:09:31

配置數據源參數

2024-02-22 14:20:44

數字化轉型數字化

2025-07-09 03:10:00

倒排索引檢索

2009-08-03 14:42:50

C#自定義控件

2009-08-04 14:25:09

學習C#Attribute與P

2020-01-22 16:50:32

區塊鏈技術智能

2009-09-11 11:16:53

C# Attribut

2022-10-08 06:38:01

元宇宙NFT加密貨幣
點贊
收藏

51CTO技術棧公眾號

欧美另类中文字幕| 成人a在线视频免费观看| 亚洲欧美日韩精品一区二区| 亚洲男人第一av网站| 亚州精品一二三区| 最新av在线播放| av电影天堂一区二区在线| 国产91免费看片| 国产性生活大片| 任你躁在线精品免费| 欧美高清一级片在线| 日韩黄色片在线| youjizz在线播放| 国产91精品一区二区麻豆网站| 欧美亚洲日本网站| www.xxxx日本| 国产欧美一区| 精品av久久707| 在线观看免费av网址| 黄频免费在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 色婷婷综合激情| 蜜臀av.com| 黄色影院在线播放| 丁香桃色午夜亚洲一区二区三区| 国产精品久久久| 久久国产视频播放| 国语对白精品一区二区| 日韩中文字幕在线视频| 大黑人交xxx极品hd| 亚洲经典视频| 欧美肥胖老妇做爰| 中文字幕一区二区三区四区在线视频| av影片在线| 亚洲精品中文字幕乱码三区| 五月天亚洲综合| 日韩一二三四| 成人黄色大片在线观看| 91精品国产99久久久久久红楼| 日韩精品一区二区亚洲av观看| 一区在线播放| 欧美国产日韩一区二区在线观看 | 欧美日韩在线播放视频| 日韩av一区在线观看| 午夜影院福利社| 日韩黄色av| 日韩一区二区在线看| 日本在线一二三区| 成人精品动漫| 欧美日韩中字一区| 看欧美ab黄色大片视频免费 | 欧美一区高清| 美日韩丰满少妇在线观看| 午夜精品久久久久99蜜桃最新版 | 久久久黄色大片| 中文国产一区| 欧美一级在线播放| 亚洲s码欧洲m码国产av| 亚洲综合丁香| 国产精品成熟老女人| 国产一级精品毛片| 美腿丝袜一区二区三区| 91精品久久久久久久久久| 91免费视频播放| 国产久卡久卡久卡久卡视频精品| 国产精品久久77777| 亚洲一区中文字幕在线| 激情亚洲综合在线| 国产福利久久精品| 视频午夜在线| 欧美激情自拍偷拍| 超碰免费在线公开| 欧美高清另类hdvideosexjaⅴ| 亚洲一级二级在线| 成人av一级片| 日韩不卡视频在线观看| 欧美日韩午夜影院| 免费人成视频在线播放| 国产无遮挡裸体免费久久| 亚洲精品资源在线| 99久久99久久精品免费看小说.| 天堂网在线观看国产精品| 免费av一区二区| 久久久久久久久久影院| 蜜桃精品在线观看| 91丨九色丨国产| 飘雪影视在线观看免费观看| 国产农村妇女精品| 国产性生活免费视频| 黄色成人免费网| 91精品欧美综合在线观看最新| 麻豆精品国产传媒| 免费一区二区三区视频导航| www.亚洲免费视频| 日韩免费一级片| 蜜桃久久久久久| 国产伦精品一区二区三区免费视频| 免费在线观看污视频| 日韩一区日韩二区| 日韩avxxx| 免费观看亚洲视频大全| 亚洲欧美国产视频| 清纯粉嫩极品夜夜嗨av| 日日摸夜夜添夜夜添国产精品| 成人午夜激情网| 天堂在线资源库| 中文字幕一区二区三区精华液 | 国产精品原创| 欧美久久久一区| 大地资源二中文在线影视观看| 四虎成人av| 日本久久久久久久久| 性一交一乱一乱一视频| 日本一区二区在线不卡| 无罩大乳的熟妇正在播放| 国产高清日韩| 亚洲小视频在线| 久久高清免费视频| 国内精品久久久久影院色 | 国产小视频在线| 亚洲国产wwwccc36天堂| 亚洲怡红院在线| 精品日韩在线| 欧美最猛性xxxxx亚洲精品| 亚洲精品97久久中文字幕| 国产精品毛片a∨一区二区三区| 精品少妇一区二区三区在线| 日韩欧美高清一区二区三区| 日韩有码视频在线| 国产又粗又猛又爽又| 99国产麻豆精品| www污在线观看| 精品国产亚洲一区二区在线观看 | 日韩在线一区二区三区| 国外成人在线视频网站| 超碰在线最新| 91麻豆精品国产91久久久使用方法 | 日本在线xxx| 超碰地址久久| 久久免费成人精品视频| 亚洲国产精彩视频| 一区二区视频免费在线观看| 国产成年人视频网站| 欧美中文字幕一区二区| 国产suv精品一区二区三区88区| 香蕉视频免费在线看| 韩国欧美一区| 91免费在线视频观看| 玖玖精品在线视频| 色综合视频一区二区三区44| 在线播放国产一区中文字幕剧情欧美 | 牛牛影视一区二区三区免费看| 欧美久久久精品| av男人天堂网| 一区二区三区加勒比av| 性折磨bdsm欧美激情另类| 午夜精品婷婷| 国产99视频精品免费视频36| 欧美xxxx免费虐| 日韩欧美一二三| 久久久精品国产sm调教| 成人国产电影网| 99精品在线免费视频| 免费观看久久av| 国产极品jizzhd欧美| 国产中文在线视频| 91福利区一区二区三区| 欧美色图17p| 精品中文av资源站在线观看| 精品国产三级a∨在线| 亚洲国产视频二区| 91精品国产一区| 奇米影视888狠狠狠777不卡| 欧洲精品一区二区三区在线观看| 午夜影院黄色片| 寂寞少妇一区二区三区| 日韩一级免费看| 欧美日韩一区二区三区四区不卡| 日本久久久久久| 欧美极品另类| 亚洲成av人乱码色午夜| 久久亚洲精品国产| 国产精品美女久久久久久| 午夜免费福利网站| 99亚洲一区二区| 亚洲春色综合另类校园电影| 日本精品在线播放| 17婷婷久久www| 网友自拍视频在线| 亚洲成人精品视频| 国模私拍一区二区| 亚洲免费成人av| 欧洲美一区二区三区亚洲| 极品少妇xxxx精品少妇偷拍 | 亚洲一区二区三区高清| 五月婷婷综合色| 超碰成人97| 国产拍精品一二三| av女在线播放| 日韩视频免费大全中文字幕| 成人片在线免费看| 国产又爽又黄网站亚洲视频123| 色狠狠色噜噜噜综合网| 爱爱视频免费在线观看| 久久午夜电影网| 国产91在线免费观看| 视频在线观看一区| 日韩激情视频一区二区| 日韩av片子| 久久青青草原一区二区| 欧美h版在线观看| 国产精品国产福利国产秒拍| 丁香高清在线观看完整电影视频 | 成人福利网站| 伊人成人开心激情综合网| 后入内射欧美99二区视频| 欧美四级电影网| 天堂网av手机版| 一区二区三区免费看视频| 又色又爽的视频| 久久亚洲精精品中文字幕早川悠里 | 精品国产网站在线观看| 91午夜交换视频| 色婷婷精品大视频在线蜜桃视频| 欧美成人免费观看视频| 中文无字幕一区二区三区| 99久久人妻无码中文字幕系列| 国产呦精品一区二区三区网站| 99草草国产熟女视频在线| 亚洲美女少妇无套啪啪呻吟| 久久视频免费在线| 久久国产成人午夜av影院宅| 欧美日韩亚洲免费| 欧美自拍一区| 国产偷久久久精品专区| 国产精品对白| 肥熟一91porny丨九色丨| 亚洲视频资源| 国产原创欧美精品| 国产精品蜜月aⅴ在线| 国产精品久久99久久| 波多视频一区| 日韩av电影院| 日日夜夜天天综合| 国产精品第一区| 四虎影视4hu4虎成人| 日韩免费在线看| 裤袜国产欧美精品一区| 日本aⅴ大伊香蕉精品视频| 高端美女服务在线视频播放| 欧美激情一级二级| 51精品视频| 8090成年在线看片午夜| 97se综合| 国产精品久久久久久久久男| 欧美在线va视频| 国产欧美精品在线播放| 好吊视频一二三区| 99re国产精品| 国产精彩视频一区二区| 99国产精品久久久久久久成人热| 久久综合久久网| 香蕉成人久久| 丁香婷婷激情网| 麻豆精品一区二区三区| 在线观看免费视频污| 国产成人av一区二区| 影音先锋人妻啪啪av资源网站| 91视频一区二区三区| 性猛交娇小69hd| 国产精品久久久久久一区二区三区 | 亚洲 自拍 另类小说综合图区| 亚洲久久一区| 久久精品网站视频| 狠狠色综合播放一区二区| 亚洲综合在线一区二区| 从欧美一区二区三区| 亚洲天堂久久新| 国产精品国产成人国产三级| 成年人午夜剧场| 五月开心婷婷久久| 久久久精品毛片| 欧美一卡在线观看| 天天操天天干天天插| 在线亚洲男人天堂| 色a资源在线| 欧美有码在线视频| 999色成人| 鲁鲁狠狠狠7777一区二区| 色乱码一区二区三区网站| 国产肉体ⅹxxx137大胆| 久久精品卡一| 亚洲一区二区三区三州| 91麻豆文化传媒在线观看| 亚洲av无一区二区三区| 亚洲成av人影院在线观看网| 91丨九色丨海角社区| 日韩欧美亚洲一区二区| 国产98在线| 国语自产精品视频在线看一大j8 | 日本激情视频在线观看| 国外成人性视频| 成人国产精品久久| 日本a级片久久久| 国产精品xvideos88| 蜜桃免费在线视频| 99这里只有精品| 黄色录像一级片| 色94色欧美sute亚洲线路二| 亚洲国产综合一区| 中文字幕日韩精品有码视频| av资源网在线播放| 91欧美精品午夜性色福利在线 | 先锋影音男人资源| 久久综合影视| 国产51自产区| 亚洲欧美日韩国产综合| 国产美女www爽爽爽| 精品av久久707| 中文字幕在线观看播放| 蜜桃av噜噜一区| 伊人国产精品视频| 国产欧美一区视频| 欧美在线观看不卡| 精品国产一区二区三区四区四| 欧美日韩在线资源| 国产91在线播放| 欧美电影在线观看完整版| 欧美在线观看视频免费| 久久99久久久欧美国产| 91激情视频在线观看| 色综合天天综合在线视频| 人妻精品一区一区三区蜜桃91| 久久大大胆人体| 少妇高潮一区二区三区99| 午夜午夜精品一区二区三区文| 亚洲专区一区| 天天插天天射天天干| 亚洲成在线观看| 亚洲免费成人网| 欧美激情视频一区二区三区不卡| 国产一区 二区| 特级黄色录像片| 国产原创一区二区三区| 69av视频在线| 日韩一级精品视频在线观看| 成人看av片| 岛国一区二区三区高清视频| 欧美午夜一区| 一本色道久久hezyo无码| 夜夜爽夜夜爽精品视频| 免费激情视频网站| 91豆花精品一区| 国产中文精品久高清在线不| 黄色三级视频在线| 国产精品视频在线看| 一区二区不卡视频在线观看| 日韩有码在线播放| 国产亚洲高清在线观看| 超碰人人爱人人| 不卡的av中国片| 91玉足脚交嫩脚丫在线播放| 亚洲全黄一级网站| 成人精品三级| 91制片厂免费观看| 国产成人免费高清| 日本网站在线播放| 亚洲欧洲在线播放| 国产精品久久久久久久久免费高清 | 日本激情一区二区三区| 91成人免费观看网站| 成人在线免费小视频| √天堂资源在线| 亚洲国产视频直播| 三级做a全过程在线观看| 国产精品av在线播放| 中文在线日韩| 国产精品手机在线观看| 日本福利一区二区| 黄网址在线观看| 国产日韩欧美二区| 日韩av中文在线观看| 91久久国产综合| 日韩高清av在线| 欧美一区二区三区婷婷| 国产高清www| 中文字幕欧美日韩一区| 亚洲成人一级片| 国产精品国内视频| 欧美激情亚洲| 国产经典一区二区| 俺来俺也去www色在线观看| 欧美成熟毛茸茸复古| 精品一二线国产| 在线观看免费av片| 欧美大奶子在线| 精品一级毛片| 中文字幕一区二区三区乱码不卡| 欧美在线观看你懂的| 国产网红女主播精品视频|