BLReflection 反射常用操作類

2021-04-26 22:29:00 字數 2561 閱讀 6039

blreflection 是我自己寫的乙個關於反射操作的類,在我之前關於linq的文章有用到, 希望有需要的朋友可以看看。

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.reflection;

namespace

common

public

static

list

getproperties(type

t)public

static

ienumerable

getpropvalues(object

obj)

//add in feb 07, 2009

public

static

object

getpropvalue(object

obj, string

propname)

public

static

object getpropattributes(object

obj, string

propname)

public

static

t getpropattribute

(object

obj, string

propname)

public

static

string getpropfrom

(object

obj, func

filter) where

t : attribute

}return

result .toarray();

}public

static

idictionary

todictionary

(tt) //where t : class

public

static

string

getclassname

() where

t : class

public

static

tparse

(string

str) where

t : struct

public

static

object

parse(type

type, string

str)

);

varm = mfactory.getparsemethod(type);

if (m == null) return

str;

object

result = m.invoke(null, new

object );

return

result;}}

public

static

class

mfactory

}public

static

methodinfo

getparsemethod(type

type)

);methods.add(type, m);

}return

methods[type];}}

}這裡主要說說parse的用法, 因為其他方法對於會reflection的人來說已經是很簡單的事情了。 blrelection.parse 是動態呼叫基本資料型別的parse方法(當然其他有parse公共方法的類也可以)。而

mfactory類是對這些parse方法做乙個快取,以後呼叫同一型別的parse方法就會快多了(畢竟反射是比較慢的,相信用過的人都知道)。

乙個小例子: int data = blreflection.parse(typeof(int), "121212");  //結果是data=

121212

這個例子不足於說明這個方法的通用性。但是我沒有時間寫乙個更好的例子來說明,在這裡就簡單說說關於資料轉換的乙個例項吧—— 譬如有乙個form, 裡面有一些基本的錄入(例如說錄入user, user 類是這個樣子, 那麼這個form就有3個textbox, 分別是txtname,txtage, txtheight),通常我們的做法是:

user user= new user(); 

user.name= txtname.text ;

user.age = int.parse(txtage.text);

user.height = double.parse(txtheight.text); //假如height是175.5 這樣型別資料的話

我們也可以借用反射來寫個公共的方法處理:

public void updatemodel(t t, control controls)

有點ioc的味道, 呵呵(暗喜。。。)。

但在實際應用中不會用到(原因:1.效率, 2.資料型別一般不會這麼簡單)(回到現實 - . -!)

常成員,常函式,常物件

知識點1.常物件中的任何型別的資料成員 無論私有還是公有 的值都不能被改變。知識點2.常物件能呼叫的 1.公有的常成員函式 2.建構函式 3.公有的靜態函式 知識點3.常物件與常成員函式只有同時存在才都有意義 知識點4.普通物件既可以呼叫常成員函式,也可以呼叫非常成員函式 知識點5.常成員函式不能更...

常物件,常成員函式,常引用

宣告顯示 const 型別說明符 物件名 常物件的資料成員值在物件的整個生存期間不能被改變,即就是,常物件必須進行初始化,而且不能被更新。宣告形式 型別說明符 函式名 參數列 const 注意 1.在函式定義部分也需要帶const關鍵字。2.乙個常物件只能呼叫它的常成員函式,是常物件唯一的對外介面方...

this指標 常函式 常物件

this指標引入 類中物件的成員變數和成員函式是分開儲存的,sizeof 空class 1,另外示例中涉及到位元組對齊的問題,double本身的位元組為8,int為4,由於位元組對齊,int也為8,所以最終位元組數為16 1 class person 89 void test01 非靜態成員變數才屬...