C#如何創(chuàng)建自定義特性
概述
特性(Attribute)是用于在運行時傳遞程序中各種元素(比如類、方法、結(jié)構(gòu)、枚舉、組件等)的行為信息的聲明性標(biāo)簽。您可以通過使用特性向程序添加聲明性信息。一個聲明性標(biāo)簽是通過放置在它所應(yīng)用的元素前面的方括號([ ])來描述的。要設(shè)計你自己的自定義特性,無需掌握許多新的概念。 如果你熟悉面向?qū)ο蟮木幊蹋⑶抑廊绾卧O(shè)計類,那么你已經(jīng)具備大部分所需知識。 自定義特性本質(zhì)上是直接或間接派生自 System.Attribute的傳統(tǒng)類。 與傳統(tǒng)類一樣,自定義特性包含用于存儲和檢索數(shù)據(jù)的方法。
實現(xiàn)方式
1、聲明自定義特性,一個新的自定義特性應(yīng)派生自 System.Attribute 類。
// 一個自定義特性 BugFix 被賦給類及其成員 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute
2、構(gòu)建自定義特性,讓我們構(gòu)建一個名為 DeBugInfo 的自定義特性,該特性將存儲調(diào)試程序獲得的信息。
// 一個自定義特性 BugFix 被賦給類及其成員
[AttributeUsage(AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property,
AllowMultiple = true)]
public class DeBugInfo : System.Attribute
{
private int bugNo;
private string developer;
private string lastReview;
public string message;
public DeBugInfo(int bg, string dev, string d)
{
this.bugNo = bg;
this.developer = dev;
this.lastReview = d;
}
public int BugNo
{
get
{
return bugNo;
}
}
public string Developer
{
get
{
return developer;
}
}
public string LastReview
{
get
{
return lastReview;
}
}
public string Message
{
get
{
return message;
}
set
{
message = value;
}
}
}
3、應(yīng)用自定義特性
[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")]
[DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")]
class Rectangle
{
// 成員變量
protected double length;
protected double width;
public Rectangle(double l, double w)
{
length = l;
width = w;
}
[DeBugInfo(55, "Zara Ali", "19/10/2012",
Message = "Return type mismatch")]
public double GetArea()
{
return length * width;
}
[DeBugInfo(56, "Zara Ali", "19/10/2012")]
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
以上就是C#如何創(chuàng)建自定義特性的詳細內(nèi)容,更多關(guān)于C#創(chuàng)建自定義特性的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
WPF數(shù)據(jù)綁定時出現(xiàn)StringFormat失效的原因和解決方法
在數(shù)據(jù)綁定過程中,我們經(jīng)常會使用StringFormat對要顯示的數(shù)據(jù)進行格式化,以便獲得更為直觀的展示效果,但在某些情況下格式化操作并未生效,所以本文介紹了WPF數(shù)據(jù)綁定時出現(xiàn)StringFormat失效的原因和解決方法,需要的朋友可以參考下2024-12-12
DevExpress根據(jù)條件設(shè)置GridControl RepositoryItem是否可編輯
這篇文章主要介紹了DevExpress根據(jù)條件設(shè)置GridControl RepositoryItem是否可編輯,需要的朋友可以參考下2014-08-08
C#調(diào)用mmpeg進行各種視頻轉(zhuǎn)換的類實例
這篇文章主要介紹了C#調(diào)用mmpeg進行各種視頻轉(zhuǎn)換的類,實例分析了C#調(diào)用mmpeg操作視頻文件的技巧,非常具有實用價值,需要的朋友可以參考下2015-03-03

