發表文章

目前顯示的是 7月, 2012的文章

解決Reflection找不到繼承其它類別之類別

圖片
前幾天說明了如何使用dynamic來取代Reflection的功能,寫完文章後自己又玩了一下,卻無意間發現另外的問題,如果要操作的類別與繼承的類別並不是在相同的dll的話會取不到類別,dynamic與 Reflection的結果都一樣, 在發生問題的當下以為是namespance寫錯的關係,不過反覆調整了幾次發現都不是,於是就陷入了混亂的思緒,這時候就證明了當你以呈現混亂的思緒還是離開當下的環境比較好,回到家洗完澡後就想到一個問題,會不會是子類別讀不到父親類別的參考(雖然我編譯時期有參考)但是編譯成dll檔後它們並不互相認識,於是我就很天才的把兩個dll放在同一目錄底下,然後很開心的一試,還是掛掉(理所當然的吧),再把父親類別跟子類別放在同一個專案下編譯就正常,當下覺得很奇怪。

NET4.0新特性 dynamic

圖片
以往我們如果有一個dll檔,如果要使用C#來呼叫,我們都會使用反射(Reflection)的方式來呼叫相關的Methods,我先前也有一篇文章有提到關於 Reflection的基本操方式 。 最近因為因緣巧合的情況之下發現了NET4.0所提供的新特性 dynamic ,根據MSDN的說法  dynamic 型別可讓它發生所在的作業略過編譯時期型別檢查 ,講白話文的意思就是dynamic可以讓C#語法有了類似VB的特性弱型別語言的特性,宣告的時候不需要知道型別,且編譯的過程中編譯器預設也不會對dynamic進行檢查。

動態Included JavaScript的問題

圖片
在寫元件的時候常常會需要Included一些JavaScript檔,最近遇到一個問題就是需要Included一個jQuery檔案,但是NET所提供的【Page.ClientScript.RegisterClientScriptInclude】會把檔案放在<form></form> 中間,這樣一來會有一些問題產生。 通常我們在寫JavaScript的時候,會習慣把JS寫在 <head><head>中間,如果頁面中有用到jQuery的話,必須要把jquery.x.x.js檔放在自己寫的JS上面,不然會發生找不到物件的情形產生。舉個例子來說,最近要寫一個在iframe載入完畢後要自動調整寬高,理論來說這麼簡單的語法,只需要透過JavaScript就可以輕易達成了( 之前的文章也有提到 ),但最近發現先前所提到的寫法在不同瀏覽器計算出來的高度有誤,或者無法正常運作的情況產生,經過多次測試後發現,其實使用jQuery就可以輕易的取得我們所需要的iframe的寬高(測試幾個瀏覽器IE7,IE9,Chrome,Firefox都正常),於是我就想說寫一個IFrame的元件來用。