none
如何實現方法下面處理列舉的功能 RRS feed

  • 一般討論

  • 各位先進好,

    今天在重構程式的時候,希望在方法裡面自動迂迴透過存取列舉設定同一個物件裡面的欄位

    舉例來說,目前的情況是這樣子


    Transport car = new car;

    car.type = carBrand.Benz.ToString(); //carBrand是一個列舉

    這時car裡面的type欄位已經被設定成字串"Benz"

    但想要達成類似

    car.SetType().Benz;

    也就是car下面呼叫SetType()方法,就可以自動地從carBrand的列舉底下抓出.Benz下來自動轉存到car.type欄位中

    這種寫法,大體的架構要怎麼實作呢?

    也不一定要用方法,任何可以讓Intellisense可以自動跳出提示的語法都可以

    另外用方法傳值的方式也沒有達到我想要的目的,不過我只是假設這種寫法

    印象中以前是有看到類似的寫法,但年代有點久遠,也不確定是不是這樣用

    試了幾種方式都沒有成功,先謝謝各位指教了!





    2014年7月18日 上午 04:24

所有回覆

  • 把 carBrand 列舉型別當成 SetType() 方法的參數是有甚麼問題嗎 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年7月18日 上午 05:06
    版主
  • 謝謝bill叔回應

    因為只是單純賦予Car.type一個列舉成員toString的結果

    所以我也不想要透過SetType(傳值)的方式去處理

    因為這樣還是必須知道有carBrand這個Enum存在才能傳值進去

    是想要達成不需要有任何先前知道其他物件,就可以直接讓其他人知道Car.SetType下面有哪些carBrand的列舉成員可以使用並且設定。

    不知道這種寫法能不能做到(後來想想這種語法完全不合法...)

    Car.SetType().BENZ;

    Car.SetType().FORD;

    Car.SetType().TOYOTA;

    2014年7月18日 上午 05:12
  • 我想想是不太可能, 因為當你 .BENZ 後面沒有 (), 代表他比較可能是個屬性, 欄位, 或是列舉之類的.

    我倒認為你的 Car 類別中的 Type 屬性應該是 Enum 而非 String 型別.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年7月18日 上午 05:24
    版主
  • 你可以試試用 Fluent API + Extension Method 來做。

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年7月18日 上午 05:35
    版主