4 0 高階程式設計 Reflection

2021-07-10 06:35:34 字數 3400 閱讀 2938

system.type類

1.屬性

許多布林屬性表示這種型別是乙個類還是乙個列舉等等。這些特性包括isabstract,isclass等等

type vectype = typeof(vector);

console.writeline(vectype.isabstract);//return false

console.writeline(vectype.isclass);//return true

2.方法

獲取對應資料型別的成員資訊,建構函式,屬性,方法和事件

type t = typeof(double);

methodinfo methods = t.getmethods();

foreach (methodinfonextmethodin methods)

console.writeline(nextmethod);

返回方法的俄細節資訊。

assmeble類

把程式集載入到正在執行的程序中。可以使用靜態成員assmeble.load和assemble.loadfrom。前者的引數是程式集名稱,執行庫會在各個位置上搜尋該程式集。後者的引數是完整的路徑

whatsnewattribute的例子自定義attribute 類必須繼承於system.attribute 空間。

namespace wrox.procsharp.whatsnewattributes

[attributeusage(attributetargets.class|attributetargets.method, allowmultiple = true, inherited = false)]

public

class

lastmodifiedattribute:attribute

private

datetimedatemodified;

private

stringchanges;

private

stringissues;

public lastmodifiedattribute(stringdatemodified,string changes)

this.datemodified = datetime.parse(datemodified);

this.changes = changes;

public

datetimedatemodified

get

return datemodified;

public

string changes

get

return changes;

public

string issues

get

return issues;

set

issues = value;

[attributeusage(attributetargets.assembly)]

public

class

supportswhatsnewattribute : attribute

using wrox.procsharp.whatsnewattributes;

using system.collections;

[assembly: supportswhatsnew]

namespace wrox.procsharp.vectorclass

[lastmodified("14feb 2007","ienumerable inte***ceimplemented " +

"so vector can now be treated as a collection")]

[lastmodified("10feb 2007","iformattable inte***ceimplemented " +

"so vector now responds to format specifiers n andve")]

class

vector :iformattable

public

double x, y,z;

public vector(doublex,double y, doublez)

this.x = x;

this.y = y;

this.z = z;

[lastmodified("10feb 2002",

"methodadded in order to provide formatting support")]

public

stringtostring(string format,iformatprovider formatprovider)

if (format != null)

return tostring();

else

return

null;

[lastmodified("14feb 2007",

"class created as part of collection support forvector")]

private

class

vectorenumerator

using wrox.procsharp.whatsnewattributes;

namespace reflection

class

program

static

stringbuilderoutputtext =new

stringbuilder(1000);

static

datetimebackdateto =new

datetime(2007,2, 1);

static

void main(string args)

assembly theassembly = assembly.load("wrox.procsharp.vectorclass");

type types = theassembly.gettypes();

foreach (type tin types)

console.writeline(t.name);

attribute attri = attribute.getcustomattributes(t, false);

foreach (attributeiin attri)

lastmodifiedattributelastmodifiedattrib = ias

lastmodifiedattribute;

console.writeline(lastmodifiedattrib.datemodified.tostring()+" ; " +lastmodifiedattrib.changes);

console.read();

每日程式設計(40)

題目描述 給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。示例 1 輸入 s aab 輸出 aba 示例 2 輸入 s aaab 輸出 注意 s 只包含小寫字母並且長度在 1,500 區間內。分析 首先通過乙個字典對字串中的所有進...

《微軟Dynamics CRM 4 0 程式設計》

programming microsoft dynamics crm 4.0 微軟dynamics crm 4.0 程式設計 由sonoma partners 公司組織編寫,這個公司可以說是從事microsoft crm 最早期的合作夥伴 開始於crm 1.0 pre release beta 公司...

WCF 4 0 高階系列 隨筆彙總

wcf4.0 高階系列 前言 wcf4.0 高階系列 第一章 wcf簡介 wcf4.0高階系列 第二章 寄宿wcf服務 wcf4.0高階系列 第三章 構建健壯的程式和服務 wcf4.0高階系列 第四章 保護企業內部的wcf服務 wcf4.0高階系列 第五章 在網際網路環境下保護wcf服務 wcf4....