理解自定義特性 Attribute

2022-02-11 07:04:35 字數 1109 閱讀 6277

假設 外語老師 是乙個類,

那麼 外語老師 應該具有這樣的特性:會說外語

並且 會說外語 這一特性又包含一些資訊,比如:外語種類、外語水平、其它資訊。

按照這樣的理解,應該有下面的實現。

using system;

using system.reflection;

namespace test_console

public canspeakforeignlanguage(string languagetype, int languagelevel)

//定義屬性

//特性和屬性不是一回事

public string languagetype

}public int languagelevel

}public string languageinfo

set

}//定義方法

public void canspeak()

.", _languagetype == null ? "chinese only" : _languagetype);}}

//定義乙個類,languageteacher ,這個類具有 canspeakforeignlanguage 特性

[canspeakforeignlanguage("english", 8, languageinfo = "this is us english, but not england english.")]

public class languageteacher

}//主程式

class program

console.writeline();

//反射建立 languageteacher 物件,執行它的 sayhello 方法

object obj = activator.createinstance(type);

methodinfo mi = type.getmethod("sayhello");

mi.invoke(obj, null);}}

}

得到的執行結果如下圖:

自定義特性

1.指定attributeusage特性 特性 attribute 類本身用乙個特性 system.attributeusage特性來標記。attributeusage主要用於標識自定義特性可以應用到哪些型別的程式元素上。這些資訊由它的第一引數給出,改引數是必選的,其型別是列舉型別的attribut...

C 自定義特性

code1 using system using system.collections.generic using system.linq using system.text namespace mylibrary.attributeclass 對於位置引數,通常只提供get訪問器 public s...

編寫自定義特性

自定義特性一般標註在作用的程式元素的上方 編譯器首先組合特性名稱和attribute,然後尋找該組合名,所以特性名為fieldname和fieldnameattribute的兩個特性沒有區別 編譯器將尋找包含有這個名稱的類,它直接或者間接的派生資system.attribute 編寫自定義類的步驟 ...