台灣最大程式設計社群網站
線上人數
1122
 
會員總數:246691
討論主題:190104
歡迎您免費加入會員
討論區列表 >> C# >> 如何在方法中建立判斷式
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何在方法中建立判斷式
價值 : 200 QP  點閱數:2618 回應數:25
樓主

James Cheng
門外漢
0 7
406 63
發送站內信


各位前輩好!!!
小弟來請求解惑了
還望請各位前輩多多幫忙

程式碼如下

此為Base class



此為Bank的資料, 會有多個Bank檔案



Form1



補充, 此次修改是採用了春天大的方法完成的, 在此特地感謝!!!

問題如下篇


搜尋相關Tags的文章: [ 判斷 ] , [ 方法 ] , [ 實作 ] , [ 呼叫 ] ,
本篇文章發表於2017-10-16 16:55
1樓
不錯的參考

春天
檢舉此回應
建議你用設計模式 工廠
在button1.Click中由工廠決定要產生哪一個Bank,再調用該Bank的父類別方法CreateIn()及CreateOut()即可
看起來會像

本篇文章回覆於2017-10-16 17:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

James Cheng
檢舉此回應

此為刷卡檔
小弟現在有兩的問題求教

1.
在form1中的判斷式需要改寫入Base class當中
判斷後來確定呼叫那一個Bank的檔案
我自己先設定了有Bank1 Bank2 Bank3
以下的BankCode 都是自訂的
並非接外來值
public int BankCode = 01;
public int BankCode = 02;
public int BankCode = 03;
(Bank2 Bank3的程式碼與Bank1幾乎相同,就不補上了)
想請教這判斷的程式到底該怎麼寫??

2.
在Bank中有一段註解掉的code
為Process的用法
小弟已爬過文了
直接呼叫就如上註解掉的部份
請問該如何將其分開寫成CreateFile.cs中的"方法"與Bank.cs中的實作

而且這兩個問題也是有關聯的
我必須要先做判斷後呼叫對應的exe檔
例如判斷是Bank1
就要呼叫Bank1.exe

小弟不會上傳圖片(試了好幾次都上傳不了= =)
所以只好用簡單的筆述流程(請見諒)

Pos機----------->Base class(DLL)----------(執行被呼叫對應的exe)----------->刷卡機
request呼叫個別對應之exe檔

如上
還請各位前輩幫忙解惑
12萬分感謝!!!!!


本篇文章回覆於2017-10-16 17:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

James Cheng
檢舉此回應
回春天大

可是小弟現在主要是要把判斷寫入CreateFile.cs中
因為CreateFile.cs是要當成一個DLL
資訊進來都要先透過CreateFile.cs判斷才須動作

在上述我原本form1的寫法雖然不如你寫的漂亮
但同樣也能成功產生檔案

另外Process這個也是重覆的動作
所以也需要分成方法與實作來寫
本篇文章回覆於2017-10-16 18:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

春天
檢舉此回應
1.BankCode肯定是外來資訊,我看你的流程是未刷卡就先知道銀行別,不知道怎麼辦到的,除非你的POS機有給銀行資訊
2.看不太懂你的問題
本篇文章回覆於2017-10-16 18:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

James Cheng
檢舉此回應
1.
其實就只是先給假的BankCode
在createfile.cs中寫判斷
然後在form1中測試

2.
我想把
Process start = new Process();
// FileName 是要執行的檔案
start.StartInfo.FileName = (@"D:\CSharp刷卡檔實作\CardTest\CTBC_win7_8.exe");
start.Start();
像是CreateIn和CreateOut一樣
在createfile.cs先寫成方法
另外在每個Bank檔中實作

我遇到的問題是
在createfile.cs中我寫
public class myProcess
{
Process start = new Process();
start.StartInfo.FileName = (string FileName);
}

而在Bank1中

FileName = @"路徑+檔名";

可是卻出錯了Orz.......
本篇文章回覆於2017-10-16 19:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

James Cheng
檢舉此回應
補充一下第一點
雖然只是寫假的
不過之後完成要套用時就會修改了
所以判斷式還是要能正確判斷
重點是判斷要寫在createfile.cs中......
本篇文章回覆於2017-10-16 19:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

誰是誰
檢舉此回應
樓主,借我問一個問題。
你的 Bank 相關類別,是不是每個類別內的 BankCode 都是固定的 ?
比方
Bank01 Class,由這個類別所產生的執行個體,他們的 BankCode 一定是 "01" ?
同理,若是 Bank02 Class 類別所產生的執行個體,BankCode 一定是"02"?
以此類推....
是這樣的嗎 ?
本篇文章回覆於2017-10-16 22:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

James Cheng
檢舉此回應
回誰是誰大大
沒錯,
我自己是這樣設定的
只是先給它個假的code
code就算是字串比對也可以
沒有一定
喜歡怎麼訂就怎麼訂

後面會怎麼處理主管沒說
只交代"給每個Bank一個代碼"
然後在DLL裡做判斷
就是這部份的重點

Boss :
Form 呼叫 DLL
DLL 控制刷卡CLASS
所有刷卡CLASS獨立

就這樣~~~
本篇文章回覆於2017-10-17 09:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

春天
檢舉此回應
誰是誰前輩提出的問題應該是想問這裡
假設你的Bank1.BankCode固定是00,那麼這邊的判斷式就永遠是true

然後
public class myProcess
{
Process start = new Process();
start.StartInfo.FileName = (string FileName);
}
這是什麼寫法...


本篇文章回覆於2017-10-17 09:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

James Cheng
檢舉此回應
回春天大與誰是誰大大
我之前就有這個疑問
因為無論怎麼run 一定B1.BankCode永遠都成立
所以我之後就只能在測試時
故意把B1.BankCode改掉例如"11"
讓程式去跑B2.BankCode
類推........

我問 :
每個刷卡檔我都寫死了一個BankCode給它
可是這樣我沒辦法做判斷
例如第一個檔案我給它BankCode = 01
if (BankCode==01)
{ ....... }
else if (BankCode==02)
{ ....... }
這樣判斷式01永遠都是成立的那如何執行其他的檔案??

可是我得到的答覆是....
BOSS:
判斷應該是寫在核心的DLL上吧…..為什麼是在各檔案裡??
(這句我真的看不懂........Orz)

請依照以下重點撰寫 :
Form 呼叫 DLL
DLL 控制刷卡CLASS
所有刷卡CLASS獨立
本篇文章回覆於2017-10-17 11:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

春天
檢舉此回應
輸入=>處理=>輸出
請你先說明一下輸入會有哪些資料
本篇文章回覆於2017-10-17 11:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

James Cheng
檢舉此回應
基本上............
除了 時間 與 Bank.cs中預設的參數 之外
就只有接收外來的資訊了
public string TransType { get; set; }
public string TradeType { get; set; }
public string Bank { get; set; }
public string CreditCard { get; set; }
public string Price { get; set; }//Price
public string TRDate = DateTime.Now.ToString();//直接取現在時間
public string TRTime = DateTime.Now.ToString();
public string Authentication { get; set; }
public string ReturnCode { get; set; }
public string TerminalID { get; set; }
public string ReferenceNo { get; set; }
public string TradeID { get; set; }
public string MenberID { get; set; }
public string card_type { get; set; }
public string a1 { get; set; }//保留位置
public string a2 { get; set; }//保留位置
public string a3 { get; set; }
public string a4 { get; set; }
public string a5 { get; set; }

request : POS或收銀機輸入 TransType 與Price 即為可建立in.txt
待透過CreateFile.cs(DLL)後解析後
呼叫對應的exe檔(例如 : 如果是Bank1就呼叫執行Bank1.exe)
最後從刷卡機responce回一堆欄位值 即建立out.txt
本篇文章回覆於2017-10-17 12:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

春天
檢舉此回應
那麼外來參數是否可判斷出應使用哪一個Bank實做來操作CreateFile
比如Bank?TransType?TradeType?CreditCard?
本篇文章回覆於2017-10-17 12:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

James Cheng
檢舉此回應
很早之前就有想過

我問 :
試了一些方式都不是很適合
想問一下如果我要判斷需要執行指定的銀行的class
應該要用哪個欄位判斷??
或是用combo box讓用戶自己選要用的??

BOSS :
每個銀行給他一組代碼
用收到的代碼去決定走哪一個

就這樣= =
我還以為會簡單多了........

不過也就是因為這樣的一些回覆
讓我比較確定的就是單純要測試用

對了!!!
因為這檔案原本是PHP檔修改過來的
我們在安裝客戶的機台時(POS 筆電...)
都會另外幫他們先設定好
不過不是這個檔案
但是同是與刷卡相關的檔案

本篇文章回覆於2017-10-17 12:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

春天
檢舉此回應
BOSS的意思應該是BankCode由你決定,並且決定之後就會從POS機傳過來這個資訊(也許你要去加功能,或者有人會加)來讓你判斷要用哪個Bank來處理
請看一下站內信箱
本篇文章回覆於2017-10-17 14:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.