精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产中文字幕日韩| 欧美美最猛性xxxxxx| 久草福利视频在线| av理论在线观看| a美女胸又www黄视频久久| 欧美一区二区三区图| 精品伦精品一区二区三区视频密桃 | 黄色污污视频软件| 午夜精品久久| 国产一区二区三区毛片| 国产sm在线观看| 欧洲av一区二区| 亚洲第一综合色| 在线成人性视频| 色视频在线观看| 国产高清亚洲一区| 国产精品小说在线| 日韩精品1区2区| 欧美一区网站| 日韩在线观看网址| 国产又爽又黄无码无遮挡在线观看| 亚洲aⅴ网站| 色综合久久久久| a级黄色片免费| 日本中文字幕在线2020| 久久久久亚洲蜜桃| 精品国产乱码久久久久| 99视频在线观看免费| 美腿丝袜在线亚洲一区| 欧美自拍视频在线| 国产午夜精品无码一区二区| 国产精品不卡| 中文字幕亚洲欧美在线| 91中文字幕永久在线| 欧美大奶一区二区| 精品伦理精品一区| gogo亚洲国模私拍人体| 久久久久黄色| 欧美三区免费完整视频在线观看| 又粗又黑又大的吊av| 日韩欧美一起| 一区二区三区四区蜜桃| 亚洲精品日韩成人| 成人免费一区二区三区视频网站| 97久久精品人人做人人爽50路 | 妖精一区二区三区精品视频| 欧美成人福利视频| 中文字幕无码毛片免费看| 国语精品视频| 91精品免费观看| 五月天视频在线观看| 四虎精品在线观看| 欧美日韩第一区日日骚| 中文av字幕在线观看| 狠狠久久伊人中文字幕| 欧美美女黄视频| 亚洲欧美手机在线| 国产欧美日韩电影| 日韩一区二区三区电影| 一级全黄裸体片| 丁香五月缴情综合网| 欧美成人精品高清在线播放 | 999精品视频在这里| 精品久久久久香蕉网| 秘密基地免费观看完整版中文 | 欧美tk丨vk视频| 91成人在线观看喷潮蘑菇| 91精品入口| 亚洲精品一区二区三区在线观看 | 香蕉视频一区| 亚洲欧洲日产国码av系列天堂| 国产免费看av| 97人人精品| 色综合91久久精品中文字幕 | 91精品国产入口| 免费看91视频| 亚洲第一福利社区| 中文字幕日韩精品有码视频| 五月天激情丁香| 亚洲午夜电影| 国产97在线|亚洲| 88av在线视频| 成人黄色在线网站| 日韩欧美在线观看强乱免费| 老司机午夜在线| 一区二区成人在线| 日本黄色三级大片| av在线精品| 亚洲国产精品成人精品| 免费在线观看a视频| 欧美在线网址| 欧亚精品在线观看| 99国产揄拍国产精品| 97精品超碰一区二区三区| 图片区小说区区亚洲五月| 国产理论在线观看| 欧美网站在线观看| 亚洲在线观看网站| 欧美**vk| 欧美精品第一页在线播放| 成人h动漫精品一区二区下载 | 亚洲熟女乱综合一区二区三区| 国产毛片一区二区三区| 欧美激情视频在线| 国产一级精品毛片| 99在线精品免费| 中文字幕一区二区三区四区五区人| 丁香高清在线观看完整电影视频| 色8久久人人97超碰香蕉987| 三上悠亚 电影| 精品国产乱码久久久久久果冻传媒| 欧美日韩国产123| 瑟瑟视频在线免费观看| 成人18精品视频| ijzzijzzij亚洲大全| 成人黄色免费短视频| 欧美xxxxxxxx| 久久99久久99精品免费看小说| 亚洲一区观看| 国产精品一区二区三区免费| 在线免费观看的av网站| 日韩欧美在线视频观看| 五月天丁香社区| 久久久久久久久国产一区| 国产精品aaa| 婷婷av一区二区三区| 亚洲精品国产视频| 天天做天天干天天操| 精品久久久久久久久久久下田| 久久久久久国产精品美女| 国产强伦人妻毛片| 国产精品视频在线看| 国产成人久久婷婷精品流白浆| 成人h动漫免费观看网站| 欧美精品在线观看| av一级黄色片| 一区二区视频免费在线观看| 999这里有精品| 天天揉久久久久亚洲精品| 国产精品视频1区| av资源在线观看免费高清| 一本久久综合亚洲鲁鲁五月天 | 亚洲欧洲精品天堂一级 | 国产黄人亚洲片| 欧美xxxx吸乳| 涩爱av色老久久精品偷偷鲁| 美女久久久久久久| 国内毛片毛片毛片毛片| 亚洲综合在线五月| 中国男女全黄大片| 亚洲精品专区| 久久综合给合久久狠狠色| 亚洲精品日产| 亚洲图片欧美午夜| 少妇又紧又色又爽又刺激视频| 国产欧美va欧美不卡在线| 亚洲欧美另类动漫| 成人婷婷网色偷偷亚洲男人的天堂| 日本高清视频一区| 97超碰人人在线| 欧美女孩性生活视频| 午夜国产福利一区二区| 高清不卡一二三区| www国产精品内射老熟女| 香蕉视频一区二区三区| 国产精品精品视频| 黄色在线论坛| 欧美成人免费网站| 日本视频网站在线观看| 国产精品理论片在线观看| 亚洲第一区第二区第三区| 国产在线不卡| 美日韩精品免费| 国产91在线播放精品| 久久精品最新地址| 人妻精品一区二区三区| 色婷婷综合久色| 国产精品18在线| 高清视频一区二区| 999精品网站| 五月婷婷六月综合| 久久99精品国产99久久| 成人日韩av| 亚洲 日韩 国产第一| 国产无套粉嫩白浆在线2022年| 欧美日韩1234| 日操夜操天天操| 国产精品色噜噜| 国产精品扒开腿做爽爽爽a片唱戏| 免费永久网站黄欧美| 老司机av福利| 欧美美乳视频| 97超碰资源| 无人区在线高清完整免费版 一区二| 最近2019年手机中文字幕| 欧美一级一区二区三区| 欧美探花视频资源| 国产精品第二十页| 国产精品国产成人国产三级| 成人午夜精品无码区| 卡一卡二国产精品| 欧美网站免费观看| 亚洲女同另类| 日韩欧美亚洲在线| 牛牛精品成人免费视频| 91美女福利视频高清| 原纱央莉成人av片| 久久久免费在线观看| 女女色综合影院| 亚洲三级 欧美三级| 亚洲欧美黄色片| 91麻豆精品国产91久久久资源速度| 国产精品suv一区二区三区| 日韩美女视频19| 日本成人免费视频| 91亚洲精品久久久蜜桃网站| 手机在线免费毛片| 青青青伊人色综合久久| 草草久久久无码国产专区| 欧美日韩久久| 成人手机在线播放| 色无极亚洲影院| 日本视频一区在线观看| 激情亚洲另类图片区小说区| 91久久国产婷婷一区二区| 欧美暴力调教| 日产日韩在线亚洲欧美| rebdb初裸写真在线观看| 精品中文字幕乱| 久cao在线| 日韩在线观看免费高清| av中文字幕在线| 一区二区成人av| 激情视频在线观看免费| 日韩经典第一页| 天堂在线视频免费| 亚洲精品suv精品一区二区| 成 人 免费 黄 色| 欧美成人一区二区三区片免费| 国产精品国产三级国产aⅴ| 欧美三级在线看| 中文字幕+乱码+中文| 日本高清视频一区二区| 国产suv精品一区二区33| 狠狠做深爱婷婷久久综合一区| 日本三级中文字幕| 精品久久久久久久久久久久| 日本少妇性生活| 午夜视黄欧洲亚洲| xxxx 国产| 欧美日韩性视频| 无码一区二区三区| 欧洲中文字幕精品| 亚洲网站免费观看| 91精品国产免费| www视频在线| 亚洲成人av在线| 亚洲人在线观看视频| 亚洲老板91色精品久久| 国产三级在线看| 日韩在线视频播放| 主播国产精品| 午夜精品在线视频| 亚洲校园激情春色| 国产精品久久999| 日韩成人综合网站| 99热99热| 亚洲深夜福利在线观看| 亚洲精品成人自拍| 久久久久久久久久久久久久| 欧美交换配乱吟粗大25p| 影音先锋久久久| 国产综合免费视频| 久久精品国产免费看久久精品| 日韩精品视频网址| 99国产精品久久久久久久久久久 | 少妇精品久久久一区二区三区| 日本一区二区三区四区高清视频| 91欧美在线| 欧美在线一区视频| 日本欧美一区二区在线观看| 亚洲国产欧美91| 91蜜桃在线观看| 国产一区第一页| 亚洲成av人在线观看| 波多野结衣影片| 日韩美一区二区三区| 三级理论午夜在线观看| www.亚洲一区| 日韩电影免费看| 国产欧美精品日韩精品| 老司机凹凸av亚洲导航| 亚洲一区在线免费| 亚洲精品美女91| 亚洲欧美偷拍另类| 99久久99久久精品免费看蜜桃| 日本精品久久久久中文| 亚洲mv大片欧洲mv大片精品| 国产污视频网站| 精品久久久久久最新网址| 尤物网在线观看| 欧美在线激情网| 日韩av综合| 亚洲一区二区三区免费看| 99精品99| 免费观看黄网站| 国产精品三级久久久久三级| 精品成人av一区二区在线播放| 51精品秘密在线观看| 免费a级毛片在线观看| 欧美激情中文字幕乱码免费| 高清亚洲高清| 欧美一区二区视频17c| 99国产精品99久久久久久粉嫩| 午夜免费一级片| 日本一区二区三区在线不卡| 国产成人无码精品| 日韩精品专区在线影院重磅| 婷婷在线视频| 国产精品久久久久av免费| 西野翔中文久久精品字幕| 国产aaa免费视频| 国产精品自拍av| 久久精品一区二区三区四区五区| 日韩欧美在线免费| 人操人视频在线观看| 久久久久久久久久久人体| 日韩中文字幕| 超级碰在线观看| 国内国产精品久久| 亚洲AV成人无码网站天堂久久| 色呦呦国产精品| 青草久久伊人| 日韩av电影在线网| 天堂一区二区三区四区| 久久综合九色综合88i| 99久久国产综合精品麻豆| 久一视频在线观看| 日韩欧美国产综合| av软件在线观看| 91免费版黄色| 欧美视频一区| 手机免费看av片| 五月天婷婷综合| 亚洲欧洲视频在线观看| 性欧美激情精品| 三级精品视频| 久久久久人妻精品一区三寸| 久久奇米777| 制服丝袜在线一区| 日日狠狠久久偷偷四色综合免费| 国产一区高清| 亚洲国产精品女人| 国产黑丝在线一区二区三区| 久久久无码精品亚洲国产| 精品国产免费人成在线观看| av伦理在线| 农村寡妇一区二区三区| 日韩精品欧美精品| 精品无码一区二区三区蜜臀| 91精品国产欧美一区二区成人 | 亚洲国产老妈| 精品人妻人人做人人爽夜夜爽| 亚洲一区二区三区四区五区中文| 亚洲精品一区二区三区蜜桃| 91精品国产91久久久久久吃药| 台湾佬综合网| 岛国毛片在线播放| 一区二区三区四区乱视频| 色婷婷av一区二区三| 欧洲精品久久久| 欧美日中文字幕| 日本中文字幕在线不卡| 亚洲一二三区在线观看| 极品美乳网红视频免费在线观看| 国产精品视频1区| 国产一区二区中文| 久久久久久久久久久国产精品| 欧美色国产精品| 青春草视频在线观看| 久久精品欧美| 国内精品伊人久久久久av影院| 久久久久久久极品内射| 亚洲午夜精品视频| 欧美电影院免费观看| 哪个网站能看毛片| 一区二区在线免费观看| 女人偷人在线视频| 国产综合在线观看视频| 亚洲大片在线| 自拍偷拍第9页| 日韩av网站导航| 国产精品视频首页| 日批视频在线免费看| 亚洲天堂精品在线观看| 亚洲欧美丝袜中文综合| 91在线直播亚洲| 日韩中文字幕1| 国产一级在线播放| 色狠狠久久aa北条麻妃|