我正在寻找一种方法来处理 B 类中 A 类引发的事件而不耦合类。
情况是 A 类是一个状态机。当 A 类的状态变为活动时,我需要发送电子邮件。我想创建一个类来监听该事件并处理它。
我将状态逻辑封装在 A 类中,并从网页(asp.net webform)中对其进行实例化。
我也可以在 webform 中实例化 email 类,但我不希望这样做,在这种情况下,编写 webform 的开发人员将不得不连接逻辑和事件。我想将所有这些逻辑推回到业务层。但我似乎没有办法做到这一点。
在 BLL
class StateHandler()
{
public event EventHandler StateChanged;
SetState(int newState)
{
// to keep things simple for sample let's assume 2 states
if (newState ==1 ) this.State = "Active";
else this.State = "Inactive";
if (this.StateChanged != null)
this.StateChanged(this, new EventArgs());
}
}
class EmailProvider()
{
SendEmail()
{
// logic to send email
}
}
Asp.net 页面
....
void OnSubmit_click()
{
StateHandler sh = new StateHandler();
//adds an event handler to the StateChanged event
sh.StateChanged += new EventHandler(sh_StateChanged);
//setting this will fire the StateChanged event
sh.SetState(1);
}