从信用卡读卡器解耦信用卡等待窗口

时间:2011-07-07 10:15:46

标签: c# design-patterns architecture

在我的程序中,我有一个窗口,当用户刷卡时,用户会看到该窗口。窗口将等待信用卡刷卡或发生任何其他错误。目前,等待窗口在内部创建读卡器类,并使用读卡器类的委托/回调方法来了解卡上的数据何时可用或发生任何其他错误。

由于有4-5种类型的读者可用,我正在为CardReader实施策略模式。

我还想将CardReader创建/实现代码与窗口代码分离。你能不能给出相同的提示。

在为CardReader设计策略模式类之前,我将阅读您的意见。

由于

1 个答案:

答案 0 :(得分:1)

使等待窗口构造函数需要对读者类的引用,注册OnCardReadEvent的等待窗口。当收到事件时,调用reader类中的函数进行检查,而不是在需要时继续显示等待窗口或关闭它。在窗口关闭从OnCardReadEvent

取消注册

如果您没有OnCardReadEvent,请创建一个。

读取完成后读取器类内部的内容使得多个窗口能够从单个读取器接收数据

DCardArrived _evnt = OnCardArrived; /*presumably declared event*/
         Delegate[] _iList;
         DCardArrived _Invoker;
         if (_evnt != null)
         {
             _iList = _evnt.GetInvocationList();
             for (int i = 0; i < _iList.Length; i++)
             {
                  //You could also use BeginInvoke
                 _Invoker = (DCardArrived)_iList[i];
                 _Invoker.Invoke(this/*Sender*/,CardData/*class that inherits EventArgs containing the data either informing just the window to close or not or with the data for further processing*/);
             }
         }

你没有给我们太多的工作:)