2017年7月28日

呼叫泛型方法時Type為變數值

之前做過一次,呼叫泛型方法,但型態在寫的時候還沒決定,
或是這個型態是個變數,還未知的,要做成下面這樣

public GenericMethod(object obj);

Type type = someobject.GetType();
GenericMethod(someobject);
想當然程式寫成這個樣子是不可行的。
所以才寫這個筆記…

2017年7月19日

時區轉換失敗


今天碰到一個問題,程式要轉換時間的時候找不到時區,第三方程式丟過來的時區資訊是MET( Middle European Time ),找了方法除了寫程式去處理例外、用第三方元件,最可靠的應該是下面這個方法了。
下圖就是找不到時區時會丟出的錯誤:

圖一









2017年7月5日

C#反組譯

先記著一些反組譯比較麻煩的東西

一、
反組譯出來的程式碼中,如果出現  CallSite ,這個應該是程式碼裡面用了dynamic,這次的例子中有出現這個
public static CallSiteobject
, OHLCDto, object>> <>p__0;但我還不知道這些型態是怎麼決定的 … 先記一下

二、
程式碼中出現<>這種東西,大概就是編譯的時候編出來的,很有可能是delegate、()=>或是Lambda表示式

三、Function 上有[AsyncStateMachine(typeof(OHLCPublisher.d__6))]這種東西,這應該是這個Function是用Async做出來的

2017年6月2日

C++ virtual function 作用

直接看程式好了,
簡單來說virtual function如果子類別有實作則會執行子類別中的內容,
如果不是virtual function,即使子類別有實作,還是會執行父類別中的內容。

2017年4月27日

MySql binary type data read & write (by Json.net)


MySQL資料型態為BINARY時,DATA TABLE讀到C#中是binary array ( byte[] )
現在用的framework是 ZayniFramework,
裡面轉物件的方式是用NewtonSoft.Json(JSon.net),

table →serialize→string
string→deserialize→object

裡面的bite array在序列化之後會轉成base64的字串,

程式中有一段,先讀出來,再更新寫回去的地方出錯,
資料型態為bianry(1),
sql parameter裡就直接將Base64的字串寫回去,錯誤訊息寫說大小超過欄位設定,

結果最後是mysql server版本的問題,
一開始安裝的是最新版5.7.18,
後來換成5.6.20版本就解決了,
這個以後換新版不知道怎麼辦…有空應該要試一下…

2017年3月8日

Visual Studio2010開Web專案一直報asp.net 4.0沒註冊


ASP.NET 4.0 has not been registered on the Web server. You need to manually configure your Web server


一直給我報上面的機歪訊息,
windows7的解決方案是打個指令
aspnet_regiis -i
這樣就好,但是win10不能用,

電腦裡裝的是.net framework 4.6 ,什麼功能也都啟用了,說我4.0沒註冊

今天找到 … 原來 … 是bug … 

2017年1月10日

Timer 執行完前次工作後再倒數

這裡用的Timer是System.Threading.Timer;

目的是在倒數計時的程式中,不要前一次工作還沒完成,下一次工作就開始執行。

看到兩種作法

  1. 用Thread中的Monitor去鎖定物件來做控制
  2. 改變計時器時間(這個比較準)