就不用看了。首先我們建立乙個類庫,將它生成為helloworld.dll,
usingsystem;
namespacewebtest
public
classreflecttest:inte***ce1
set}
privatestringwriteb
set}
publicreflecttest()
publicreflecttest(stringstr1,stringstr2)
public
stringwritestring(strings,intb)
public
static
stringwritename(strings)
public
stringwritenopara()
private
stringwriteprivate()
public
intadd() }}
然後,建立再建立乙個專案引入該helloworld.dll
usingsystem;
usingsystem.threading;
usingsystem.reflection;
classtest
modulemodules=t.getmodules();
foreach(modulemoduleinmodules)
//得到具體的類的型別,和下面乙個效果
typea=typeof(webtest.reflecttest);
//typea=t.gettype("webtest.reflecttest");//
stringbb=...;
//建立該類的例項,後面的bb為有參建構函式的引數
objectobj=activator.createinstance(a,bb);
//objectobj=t.createinstance("webtest.reflecttest");
methodinfomiarr=a.getmethods();
foreach(methodinfomi0inmiarr)
methodinfomi=a.getmethod("writestring");//顯示具體的方法
objectaa=...;
strings=(string)mi.invoke(obj,aa);//帶引數方法的呼叫
methodinfomi1=a.getmethod("writename");
stringaa1=...;
strings1=(string)mi1.invoke(null,aa1);//靜態方法的呼叫
methodinfomi2=a.getmethod("writenopara");
strings2=(string)mi2.invoke(obj,null);//不帶引數的方法呼叫
methodinfomi3= a.getmethod("writeprivate",bindingflags.instance|
bindingflags.nonpublic);
strings3=(string)mi3.invoke(obj,null);//私有型別方法呼叫
propertyinfopiarr=a.getproperties(bindingflags.instance
|bindingflags.nonpublic|bindingflags.public);
foreach(propertyinfopiinpiarr)
propertyinfopi1=a.getproperty("writea");
"writea",null);
propertyinfopi2=a.getproperty("writeb",
bindingflags.instance|bindingflags.nonpublic|bindingflags.public);
pi2.setvalue(obj,"writeb",null);
fieldinfofi1=a.getfield("write");
constructorinfoci1=a.getconstructors();
foreach(constructorinfociinci1)
constructorinfoasci=a.getconstructor(newtype...);
webtest.inte***ce1obj1=
(webtest.inte***ce1)t.createinstance("webtest.reflecttest");
webtest.reflecttestobj2=
(webtest.reflecttest)t.createinstance("webtest.reflecttest");
典型的工廠模式
foreach(typettint.gettypes())
}testdelegatemethod= (testdelegate)delegate.createdelegate(typeof(testdelegate),obj,
"writestring");
//動態建立委託的簡單例子
console.write(method("str1",2));
console.read();}}
在這裡我把我們常用的方法,屬性,等全部整理了出來,大家不要嫌棄亂,靜下心來,自己按照我的分隔一部分一部分的來,保證你對反射的學習,會事半功倍.當然有關於其方法我會繼續補充,想了這麼些就先寫下來吧.
我不知道是不是正確的
易蠻聞言翻了翻白眼,道 就你厲害,那你來說說這是怎麼回事,我來聽聽你的高見。敖潛見到自己可以大展拳腳,顯擺一下自己淵博的知識,頓時來了興致,他提高聲音,傲然開口道 小子,今天我就讓你見識一下真正的修真世界,有些事情可不是你這個門外漢可以理解的。這條河確實叫 黃泉 但是它不通向幽冥地府,因為幽冥地府根...
聽說發個部落格就有10個積分,不知道是不是真的
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
你不知道的C ToString方法
我們都知道,string型別的tostring方法在我們平時的程式設計中應用非常的廣泛,那麼,對於那些很有用但又很少用的方法,你又熟悉幾個呢?下面直接上 string str1 12345.tostring c string str2 12345.tostring n string a 123456...