本文是轉載的.
屬性是自定義的元
屬性的使用一般是被動的。
兩個部分組成:
屬性的頒發者和屬性的使用者。
屬性的頒發者聲明了某種意義。要求屬性的使用者把符合該意義的構造型(類,成員,,)標記上它。
那麼屬性的頒發者,就能通過根據它們是否有標記屬性,和屬性的數據進行某種操作了。
其中屬性的頒發者是主動地,而屬性的使用者是被動的。
對於平時,我們和我們創建的類只做為屬性的使用者。
例如對於可序列化的對象,我們只是定義:
[Serilizable] public class NameInfo
{
private string n="Undefined";
public string Name
{
get
{
return n;
}
set
{
n=value;
}
}
}
又例如在WebService裡用到的WebServiceAttribute和WebMethodAttribute
什麼時候我們才做屬性的頒布者,實現自己的屬性?
對於一般的
只有當你做的東西有自己或其他人進行擴展時,才考慮使用自定義屬性。
我這裡沒法說得明白。下面放個容易理解為什麼使用屬性的例子吧:
(這個例子需要些反射的知識)
using System;
using System.Reflection;
using 定義;
using 頒發者;
using 使用者;
using 程序;
namespace 定義
{
public interface IJob
{
void Work();
}
}
namespace 頒發者
{
//定義一個Slow的屬性。它只能使用在方法上
[AttributeUsage(AttributeTargets.Method)]
public class SlowAttribute:Attribute
{
string desc;
public SlowAttribute(string waitdesc)
{
desc=waitdesc;
}
public string WaitDescription
{
get
{
return desc;
}
}
}
}
namespace 使用者
{
public class 學習DotNet : IJob
{
public void Work()
{
Console.WriteLine("-->學習完畢");
}
}
public class 精通DotNet : IJob
{
[Slow("很久")]
public void Work()
{
System.Threading.Thread.Sleep(3000);
Console.WriteLine("........................精通完畢");
}
}
}