在C#中嵌套匿名委托 - 如何使代码可维护和可读?

时间:2015-06-11 10:07:06

标签: c# coding-style refactoring

我制作游戏,它可能有模态UI窗口,如弹出窗口。 我将所有小提琴封装到我的类中,我只是调用一个方法在屏幕上显示这样的窗口,例如显示字符列表的方法:

ShowCharactersTable(List<Character>list, 
    Action<Character>didSelectCharacter, Action<bool>didCancel)

使用示例:

ShowCharactersTable(someList, delegate(Character selectedCharacter) {

// code that runs after you picked a character

, delegate(bool didCancel){

// code that runs after you cancelled selection

});

这很好。一切都是透明的,易于使用。但是一旦我需要筑巢,我就陷入困境。例如,在字符列表中,每个字符单元格上都有几个按钮,因此我需要为其提供代理。这变得复杂了。我也可能需要在其上显示另一个模态窗口,通过这样的调用:

ShowActivitySelector(List<Activity>activitiesToShow,
     Action<Activity>didSelectActivity,   
     Action<bool>didCancelPickingActivity);

当我选择活动时,如果出现问题,我可能需要显示警报,例如:

ShowAlert(string alertText, Activity<bool>didAccept,
          Activity<bool>didCancel);

现在,要调用一个简单的字符表,我需要编写一个带有嵌套委托的3页长方法。听起来不是很有趣。我如何模块化这个并使其更容易/更易于维护?

我不想将我的界面耦合到我的模型,因为我需要使用不同的参数显示来自游戏的许多不同部分的列表,选择器和警报。 如何解决这个问题?我该怎么办?

0 个答案:

没有答案