2.26.2015

Model View Presenter

之前有概略看過一次UI Design Using Model-View-Presenter這篇文章,現在正在試著加入單元測試的功能,又詳細的看了一遍,發覺目前實作的專案,雖說也是使用MVP pattern來實作,不過在切的時候還是有些地方沒有思考清楚就做了。

目前專案中有類似此範例的情況,也是要載入客戶,然後依據選擇的客戶載入其中所有的產品,之前切分的IView介面中,所有的事件都是由UI端觸發的,而大部份的屬性都有 get, set,但其實有的property是不需要set或get的,有的動作應該是由presenter來實作,卻交由UI端觸發,還很高興自己又學會了一種模式@@

而在範例中它切出的View的介面,就很清楚的可以知道那些是由UI端發生的動作,那些是由presenter根據狀況回寫到UI端,且單元測試的部份也寫的簡單又清楚,正適合目前這個階段的學習。

Enum localization, 多國語系

試了兩種方式

1. Localizing .NET Enums

2. Data Binding an Enum with Descriptions

第一種是使用TypeConverter的方式,在Enum GetValue時傳回需要的語系字串,

第二種則是使用自訂的Attribute,然後使用自訂的class來取得字串,當然它也實作了enum的擴充函式,

不過在一一比較網路上的文章後,一開始是試著使用第一種方式,不過問題來了,由於目前的專案是試著實作MVP的方式,大部份的class都是定義在Model Library中,跟著enum的定義也放在那邊,而第一種方式它的TypeConverter類別的建構式需要傳入Properties.Resources.ResourceManager(語系放在資源檔中), 如果要含入View主專案,會形成環狀相依,最先是想把Converter類別轉成static後在專案一開始指定ResourceManager給它,不過要改很多,後來就直接使用第二種方式,只是不再使用Attribute定義,直接使用它的ToList等方式指定給目的控制項的DataSource…

2.17.2015

Action List

很久以前有找過,因為C#竟然沒有這種好東西

舊的ActionList for .NET 2.0

新的Fork ActionListWinForms

Codeplex 上的另一個實作

昨天測試發現以上有兩種不同的實作,之後再看那一種比較方便…又或是以後轉用WPF好了,至少有類似的pattern,或是再配和ReactiveUI來測

另外又不知道為什麼找到了多國語系的資料庫實作方式

http://www.west-wind.com/presentations/wwDbResourceProvider/

Reactive Extensions(Rx), ReactiveUI

其實一開始是要找State Machine的實作的…

Working with State Machines in the .NET Framework

使用 State Pattern 實作的簡單範例

stateless

試了一下,簡潔、有力!stateless 的介紹及簡單的sample

solid-state

另一種實作?還沒試用…

---

找一找不知道為什麼就找到Reactive Extensions

Why Rx?

Make Async Your Buddy With Reactive Extensions

Reactive Extensions入門

又試了ReactiveUI

專案原先是試著使用MVP模式來實作,之後或許可以試著使用ReactiveUI,只是文件真的太少了…只能看幾個在GitHub上提供的sample程式

最後,花了一天在不同的東西上,想要解決的問題是和機台的通訊及等待動作的流程控制…