Reflection 很常使用,雖不是專案標配,但一年之內總會有使用它的地方,實務上往往與多型搭配起來完成動態實例化物件的技法;
但現實中既有程式難以捉摸,不一致的撰寫風格,或意指相同事務,但文字與設計方式卻充滿弔詭。這次遇上了,
還好C# 內建函式可以幫忙解決。
先來設計物流商,這邊預計有黑貓與新竹貨運,實際會繼承介面,先以簡單能識別出即可
列舉紀載對應的物流類型
Client 端實際呼叫黑貓
其中,在GetShipper 函式中,列舉的名稱需要物流商的類型名稱,若今天列舉的 BlackCat 調整為第一個字元小寫 blackCat,
這時候就會找不到對應的物流商,如下所示。
這時候,可參考CreateInstance 方法有支援多載,ignoreCase 傳入參數以要區分大小寫
調整後,就可以正常建立對應物件
當然,列舉名稱可以透過「重構」技巧,將參考的一併修改,
不太可能風格不一致的發生;確實,但遇到的卻是使用字串設計與判斷...
沒有留言:
張貼留言