[英]how to design these codes in a more oop way?
我正在使用agsXMPP库开发基于XMPP的Microsoft WPF即时消息应用程序。 agsXMPP中有很多事件,如OnXmppConnectionStateChanged,OnLogin,OnPresence等,另一方面,由于WPF线程模式,我必须通过UI的Dispatcher.Invoke()方法处理事件,它看起来像这样:
void handleRosterItem(object sender, agsXMPP.protocol.iq.roster.RosterItem item)
{
STP_FriendsHolder.Dispatcher.BeginInvoke(new Action(delegate
{
RosterItemControl rosterItem = new RosterItemControl();
rosterItem.RosterItemName = item.Jid.User;
rosterItem.Margin = new Thickness(0);
STP_FriendsHolder.Children.Add(rosterItem);
}));
}
我几乎在每个BeginInvoke / Invoke方法中都使用匿名方法,因为我不想在任何地方创建太多的命名方法(因为我认为这不是那么“干净”)。 但是,恐怕不是以OOP方式,而且这些匿名方法很难维护。 那么,在这种情况下,如何更好地编码? 我为我的英语不好对不起,我已尽力将其弄清楚^ _ ^谢谢!
因为我不想到处创建太多命名方法
因此,您不想重复使用任何BeginInvoke / Invoke代码吗? 很好
尽管我反对“干净”的评论。
哪个更清洁? 您更容易理解哪个? 这个...
STP_FriendsHolder.Dispatcher.BeginInvoke(new Action(delegate
{
RosterItemControl rosterItem = new RosterItemControl();
rosterItem.RosterItemName = item.Jid.User;
rosterItem.Margin = new Thickness(0);
STP_FriendsHolder.Children.Add(rosterItem);
}));
... 或这个?
STP_FriendsHolder.Dispatcher.BeginInvoke(AddRosterItem);
void AddRosterItem()
{
RosterItemControl rosterItem = new RosterItemControl();
rosterItem.RosterItemName = item.Jid.User;
rosterItem.Margin = new Thickness(0);
STP_FriendsHolder.Children.Add(rosterItem);
}
NewRosterItem(RosterItem item)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.