亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#屬性(Attribute)用法實例解析

2020-01-24 02:29:51
字體:
來源:轉載
供稿:網友

屬性(Attribute)是C#程序設計中非常重要的一個技術,應用范圍廣泛,用法靈活多變。本文就以實例形式分析了C#中屬性的應用。具體入戲:

一、運用范圍

程序集,模塊,類型(類,結構,枚舉,接口,委托),字段,方法(含構造),方法,參數,方法返回值,屬性(property),Attribute

[AttributeUsage(AttributeTargets.All)]  public class TestAttribute : Attribute  {  }  [TestAttribute]//結構  public struct TestStruct { }    [TestAttribute]//枚舉  public enum TestEnum { }  [TestAttribute]//類上  public class TestClass  {    [TestAttribute]    public TestClass() { }        [TestAttribute]//字段    private string _testField;    [TestAttribute]//屬性    public string TestProperty { get; set; }    [TestAttribute]//方法上    [return: TestAttribute]//定義返回值的寫法    public string TestMethod([TestAttribute] string testParam)//參數上    {      throw new NotImplementedException();    }  }

這里我們給出了除了程序集和模塊以外的常用的Atrribute的定義。 

二、自定義Attribute

為了符合“公共語言規范(CLS)”的要求,所有的自定義的Attribute都必須繼承System.Attribute。

第一步:自定義一個檢查字符串長度的Attribute

[AttributeUsage(AttributeTargets.Property)]public class StringLengthAttribute : Attribute{  private int _maximumLength;  public StringLengthAttribute(int maximumLength)  {    _maximumLength = maximumLength;  }  public int MaximumLength  {    get { return _maximumLength; }  }}

AttributeUsage這個系統提供的一個Attribute,作用來限定自定義的Attribute作用域,這里我們只允許這個Attribute運用在Property上,內建一個帶參的構造器,讓外部傳入要求的最大長度。

第二步:創建一個實體類來運行我們自定義的屬性

public class People{  [StringLength(8)]  public string Name { get; set; }  [StringLength(15)]  public string Description { get; set; }}

定義了兩個字符串字段Name和Description, Name要求最大長度為8個,Description要求最大長度為15.

第三步:創建驗證的類

public class ValidationModel{  public void Validate(object obj)  {    var t = obj.GetType();    //由于我們只在Property設置了Attibute,所以先獲取Property    var properties = t.GetProperties();    foreach (var property in properties)    {      //這里只做一個stringlength的驗證,這里如果要做很多驗證,需要好好設計一下,千萬不要用if elseif去鏈接      //會非常難于維護,類似這樣的開源項目很多,有興趣可以去看源碼。      if (!property.IsDefined(typeof(StringLengthAttribute), false)) continue;      var attributes = property.GetCustomAttributes();      foreach (var attribute in attributes)      {        //這里的MaximumLength 最好用常量去做        var maxinumLength = (int)attribute.GetType().          GetProperty("MaximumLength").          GetValue(attribute);        //獲取屬性的值        var propertyValue = property.GetValue(obj) as string;        if (propertyValue == null)          throw new Exception("exception info");//這里可以自定義,也可以用具體系統異常類        if (propertyValue.Length > maxinumLength)          throw new Exception(string.Format("屬性{0}的值{1}的長度超過了{2}", property.Name, propertyValue, maxinumLength));      }    }  }}

這里用到了反射,因為Attribute一般都會和反射一起使用,這里驗證了字符串長度是否超過所要求的,如果超過了則會拋出異常

private static void Main(string[] args){    var people = new People()    {      Name = "qweasdzxcasdqweasdzxc",      Description = "description"    };    try    {      new ValidationModel().Validate(people);    }    catch (Exception ex)    {      Console.WriteLine(ex.Message);    }    Console.ReadLine();}

希望本文所述實例對大家的C#程序設計能有一定的幫助作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大人香蕉在线| 亚洲欧洲国产精品| 国产精品h片在线播放| 91九色精品视频| 奇米成人av国产一区二区三区| 最近日韩中文字幕中文| 亚洲国产成人在线播放| 最近免费中文字幕视频2019| 91亚洲国产成人精品性色| 日韩久久精品成人| 日韩大片免费观看视频播放| 国产精品aaaa| 久久九九热免费视频| 日韩精品在线视频观看| 清纯唯美亚洲综合| 亚洲中国色老太| 欧美色视频日本版| 久久久中文字幕| 久久综合久中文字幕青草| 91av在线不卡| 98午夜经典影视| 久久久在线观看| 国产在线拍揄自揄视频不卡99| 国产精品久久久久久久久粉嫩av| 色黄久久久久久| 伊人久久精品视频| www.亚洲男人天堂| 中文字幕久久亚洲| 国产精品久久久久久久av大片| 国产免费亚洲高清| 日韩av最新在线观看| 亚洲老头同性xxxxx| 欧美亚洲成人免费| 国产精品一香蕉国产线看观看| 亚洲国产日韩欧美在线图片| 中文字幕9999| 欧美乱妇高清无乱码| 国产69精品久久久久9999| 97国产真实伦对白精彩视频8| 亚洲一区二区三区乱码aⅴ| 欧美日产国产成人免费图片| 欧美成人免费全部观看天天性色| 国产狼人综合免费视频| 91在线视频一区| 日韩中文娱乐网| y97精品国产97久久久久久| 久久天堂av综合合色| 亚洲va码欧洲m码| 久久69精品久久久久久久电影好| 精品国产一区二区三区久久狼黑人| 欧美专区在线播放| 日韩欧美在线视频观看| 久久精品成人一区二区三区| 国产69久久精品成人看| 亚洲国产精品yw在线观看| 97在线日本国产| 亚洲护士老师的毛茸茸最新章节| 亚洲综合精品伊人久久| 国产精自产拍久久久久久蜜| 亚洲国产成人精品电影| 欧美在线视频在线播放完整版免费观看| 国内精品美女av在线播放| 日韩人体视频一二区| 亚洲精品久久久久中文字幕二区| 亚洲国产精品女人久久久| 国产一区玩具在线观看| 亚洲第一页中文字幕| 亚洲精品久久视频| 欧美疯狂性受xxxxx另类| 国产69精品久久久久9999| 日韩高清不卡av| 最近2019中文字幕mv免费看| 欧美激情视频在线观看| 欧美性感美女h网站在线观看免费| 热99精品只有里视频精品| 成人在线中文字幕| 在线观看亚洲区| 欧美电影《睫毛膏》| 久久久国产一区二区三区| 亚洲国产精品va在线看黑人| 日韩av在线直播| 丁香五六月婷婷久久激情| 久久九九全国免费精品观看| 欧美电影在线观看完整版| 国产亚洲精品一区二区| 国产精品一区二区在线| 亚洲成人免费在线视频| 国产精品嫩草影院一区二区| 一区二区三区无码高清视频| 亚洲全黄一级网站| 日韩欧美一区二区三区| 一区二区三区国产在线观看| 91社影院在线观看| 欧美重口另类videos人妖| 一二美女精品欧洲| 日韩欧美国产成人| www.久久久久| 亚洲黄色在线观看| 国产亚洲精品综合一区91| 欧洲永久精品大片ww免费漫画| www.欧美精品| 日本电影亚洲天堂| 亚洲一二在线观看| 日韩欧美国产视频| 国产欧美一区二区三区在线看| 国产欧美日韩中文字幕在线| 亚洲国产精品一区二区久| 亚洲va久久久噜噜噜| 欧美精品精品精品精品免费| 国产成人精品日本亚洲| 日韩经典中文字幕| 国产成+人+综合+亚洲欧洲| 久久久成人的性感天堂| 亚洲视频欧洲视频| 68精品国产免费久久久久久婷婷| 久久久久久中文| 亚洲午夜未删减在线观看| 久久精品国产久精国产一老狼| 欧美成人免费全部| 久久精品免费播放| 色777狠狠综合秋免鲁丝| 免费不卡欧美自拍视频| 欧美激情xxxx| 91sao在线观看国产| 中文字幕亚洲自拍| 欧美丰满少妇xxxxx做受| 日韩av在线播放资源| 欧美精品久久久久| 这里只有精品在线播放| 久久精品国产一区二区三区| 欧美精品www在线观看| 日韩在线观看你懂的| 91av在线网站| 青青a在线精品免费观看| 国产精品久久久久福利| 国内精品久久久久久| 在线午夜精品自拍| 久久成人国产精品| 国产欧美精品一区二区| 亚洲电影免费观看高清| 欧美极品少妇与黑人| 国产视频久久久久久久| xvideos亚洲人网站| 久久av红桃一区二区小说| 美日韩精品视频免费看| 在线观看视频亚洲| 亚洲男人的天堂在线播放| 性欧美视频videos6一9| 在线丨暗呦小u女国产精品| 日韩一区二区久久久| 97人人爽人人喊人人模波多| 欧美专区第一页| 国产精品精品视频| 日本最新高清不卡中文字幕| 久久夜色精品国产亚洲aⅴ| 2021久久精品国产99国产精品| 欧美中文字幕在线| 国产精品日韩在线观看| 国产视频观看一区| 欧美久久精品午夜青青大伊人| 欧美在线观看一区二区三区| 亚洲国产成人91精品| 亚洲黄色av女优在线观看| 91经典在线视频|