先前使用拆解字串的方式,雖然達到了加速的效果,不過要是在Property的Getter跟Setter以外的地方去call,
那就是無法得到property name了....
因此,我想先確認Property Getter與Setter的Method Name是否有任何識別方式,
首先,我確認的是Getter Name會像"<get_PropertyName>b_0"之類,Setter Name會像"<set_PropertyName>b_2"之類,
後面的b_0跟b_2抓不準規則,但是<get_PropertyName>與<set_PropertyName>似乎是識別項

minuswu 發表在 痞客邦 留言(0) 人氣()

大概在12月初,自己的系統寫到了需要在裡面寫Code,即時編譯執行的部分,
對於記憶力薄弱的我來說,Visual Studio的Intellisense真的是我的救星,
這次我挑了AvalonEditor來做為我的Editor,雖然有已有C# Highlight的功能,
但卻沒有Intellisense啊!
看過了一些其它例子後,似乎沒有很簡單合用的,但不如自己來?

minuswu 發表在 痞客邦 留言(0) 人氣()


如果我想快速創造一個Entity內含若干Property,但是又不想使用field跟先前所使用的字串來做為get, set value的index,
但是測試過使用Reflection的方式取得Property name,效率非常不好,是否有更有效率的方式呢?
首先,我的目標是在Get跟Set使用下面方式表達
publicint Volume
        {

minuswu 發表在 痞客邦 留言(0) 人氣()

之前寫了一組物件,裡面需要依賴Reflection來取得指定的PropertyInfo,方式如下:
typeof(T).GetProperty(memberExpr.Member.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
在試用一陣子後都平安無事,但是事情不是憨人想得那麼簡單的/_\
在一次遇上必須取得某Interface的Base Interface的PropertyInfo時,這方式失靈了,老是傳回null....
到底是怎麼回事???只好來個測試了,程式碼如下:

minuswu 發表在 痞客邦 留言(0) 人氣()

檢查參數一直是一件很繁複的事情,尤其拋出ArgumentException要傳入的Parameter Name字串常常讓我感到不舒服,但一直沒有其它辦法可以解決我的問題....
終於在今天請訪Google大神時,找到了透過Expression拆解及IL Parsing手段來取得Variable Name的方法,Happy~
整個Method很簡單:
staticstring GetParamNameByExpression<T>(Expression<Func<T>> expression) 
{

minuswu 發表在 痞客邦 留言(0) 人氣()

今天再修Bug時,有一個Bug是A generic error occurred in GDI+.,讓人摸不著頭緒,後來發現似乎跟Memory不足有相關,這時才發現目前的ListBox為了DataBinding,直接取用Model的Image file path,當來源圖檔過大時,會造成大量Memory損耗,托Google大神所賜,得知了BitmapImage的DecodePixelWidth與DecodePixcelHeight這項利器,再透過Convert轉換終於完成真正帶有縮圖的ListBox啦!

原始碼:待補

minuswu 發表在 痞客邦 留言(0) 人氣()

最近開始重複利用先前寫的底層,於是又思考了Property的Getter與Setter是否可以有更好的設計?
先前的設計是使用static field來記錄Property的基本資訊,為了避免日後造成麻煩,因此使用Expression做為Constructor參數,再透過Expression拆解,取出Property Name,建立Dictionary來存放Property value。
使得Property的宣告看起來大概就像
staticProperty<T, bool> _IsValid = RegisterProperty<bool>(entity => entity.IsValid, "是否合法");
publicbool IsValid

minuswu 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。