![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 James Cheng ![]()
![]() |
各位前輩好 小弟有些問題想請各位幫忙解惑 如下先將小弟製作的專案大致敘述一下 若需要程式碼我會再補上(因為有點多) 第1個class名為CreateFile 主要是接收值 如:public string XXX{get; set;} 另有3個class 名為Bank1 Bank2 Bank3都繼承CreateFile 如 class Bank1 : CreateFile...... 內容主要撰寫method 讓我可以建立檔案 (總共有30幾個Bank class要寫, 而且每一個的規格都有所不同, 所以才分開來) 最後再Form1的button_click中new出Bank的物件 功能就完成了 可是現在需要多一個判斷的功能 每個Bank的都要給他一個獨立的代碼(暫時稱為BankCode) 最後再form1中做判斷是哪一個BankCode 進而呼叫其相對應的Bank class執行其method "請問該如何建立一個變數能共用包含每個Bank的代碼" 再用如switch或if else來判斷 不知這樣敘述是否清楚 若有需要我會補上程式碼 自己摸索的有點久了 還是沒啥頭緒 請各位前輩能幫幫小弟!!!! 拜託了!! 謝謝~~~~~~~ |
1樓 | |
2樓 |
以你的需求建議是
本篇文章回覆於2017-10-05 12:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
這樣應該可以達成你的需求。
用法
本篇文章回覆於2017-10-05 12:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
James Cheng ![]() |
回春天哥
這個方式我試過 可是請問接下來我要如何建立每個bank各有不同的代碼 然後在form1中用一個switch或if else來去判斷呢?? 其實小弟本來已經可以直接判斷單一Bank且執行method public class CreateFile { public string BankCode { get; set; } ================================================== class Bank1 : CreateFile new string BankCode = "01"; ================================================== form1中 Bank1 B1 = new Bank1(); B1.BankCode switch (B1.BankCode) { case "01": B1.CreateIn(); B1.CreateOut(); break; 但這樣就只能單一判斷Bank1而已 無法一次全部都判斷 switch(變數)不知道該怎麼寫 不然30幾個檔案 我就必須寫30幾個單一判斷
本篇文章回覆於2017-10-05 12:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
如果你30幾個Bank都有CreateIn()跟CreateOut()方法,何不使用interface?或是寫在CreateFile看是子類別用override還是CreateFile用abstract
本篇文章回覆於2017-10-05 12:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
James Cheng ![]() |
春天哥
我知道可以這樣寫 可是因為createin跟createout這兩種方法的內容會有些不同 所以我才分開寫 現在在研究春天哥建議的interface與CHShen大的code中....
本篇文章回覆於2017-10-05 15:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓
作者回應
James Cheng ![]() |
回CHShen大
請問您的方式到form中該怎麼寫判斷呢?? 例如switch()<===中的變數應該帶入哪個??
本篇文章回覆於2017-10-05 15:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓
作者回應
James Cheng ![]() |
本篇文章回覆於2017-10-05 16:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
James Cheng ![]() |
如上是CreateFile與Bank1的程式碼
Bank class都大同小異 只有***的部分會有不同且需要有分別是哪間Bank 所以才分開來寫
本篇文章回覆於2017-10-05 16:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓 |
本篇文章回覆於2017-10-05 16:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
11樓 |
你的分類已經出現問題了
Bank是代表銀行(名詞),CreateFile是代表建檔的行為動作(動詞) 依你的情況,我猜想你的BankCode是必要指定的項目 資料的部份也可以獨立出來 沒有全面去看你的行為跟做法,初步分類如下 獨立出資料的部份 銀行的父類別 各銀行 實作
本篇文章回覆於2017-10-06 10:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
12樓 |
另外
BaseClass可以加上public,這樣外部委派也可以拿來用 實作
本篇文章回覆於2017-10-06 10:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
13樓
作者回應
James Cheng ![]() |
春天哥
12萬分的感謝你 讓程式碼更簡潔 更好維護 我先試做一個Bank1 能夠正常建立檔案 最後小弟目前遇到的問題依舊仍無法解決 如下 : 若無法取到變數的話 我再多Bank2 Bank3都沒辦法做判斷 或是我寫的方式有誤呢??
本篇文章回覆於2017-10-06 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
14樓 |
protected string _BankCode { get; set; }
改成 public string _BankCode { get; protected set; }
本篇文章回覆於2017-10-06 12:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
15樓 |
補充
加入BaseCode的判別實作
本篇文章回覆於2017-10-06 12:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |