一个带参数的通用方法还是多个方法更好?

3

我目前的主表单调用了ObjectManager类中的方法,该方法会在不同的线程中(使用Task.Factory.StartNew())加载数据库中指定的数据,然后抛出一个事件以让主表单知道何时完成,以便表单可以更新其控件。

目前,我使用一个带有参数的单一事件来通知主表单发生了什么变化(机会/报价/工作等)。

我想知道是否最好为每种类型的更改创建单独的事件?

DataChanged EventArgs:

class DataChangedEventArgs : EventArgs
{
    public String ObjectName { get; private set; }

    public DataChangedEventArgs(String objectName)
    {
       ObjectName = objectName;
    }
}

我的事件处理函数

 private void dataChanged(object sender, DataChangedEventArgs e)
    {
        switch (e.ObjectName)
        {
            case "OpportunityList": 
                //Update Opportunity List
                break;

            case "Opportunity":
                //Update single opportunity details
                break;

            case "QuoteList":
                //Update Quote List
                break;

            case "QuoteDetails":
                //Update single quote details
                break;

            case "JobDetails":
                //Update job details
                break;

            case "OpportunityLogs":
                //Do Stuff
                break;

            case "QuoteLogs":
                //Do Stuff
                break;

            case "JobLogs":
                //Do Stuff
                break;
        }
    }

编辑: 事件被调用的位置: 有多种类似于此的方法,它们加载不同的内容/保存不同的内容,然后使用不同的参数调用相同的事件。

class ObjectManager
{
    public List<Opportunity> _opportunities;

    public void loadOpportunityDetails(int _opportunityID)
    {
        int index = _opportunities.FindIndex(
                delegate(Opportunity opportunity)
                {
                    return opportunity.opportunityID == _opportunityID;
                });

        //Load details of the given opportunity

        DataChangedEvent(this, new DataChangedEventArgs("OpportunityDetails"));
    }
}

1
你能展示一下调用这个事件的代码吗? - NASSER
如果它们执行的操作不完全相似,我肯定更喜欢它们在不同的方法中。即使这些操作非常相似,并且将它们放在一个方法中是合理的,但在我看来,使用“枚举”比字符串匹配更好。 - AndreySarafanov
添加了那段代码。该类中还有类似的函数,执行不同的操作,然后调用相同的事件,但它们都会加载“something”。 - Blinx
1个回答

0

我肯定会修改调用方式,这样你就不需要传递神奇的字符串了,这样做是不必要的脆弱。

如果你为每个事件都有一个单独的方法,那么维护、测试和调试都会更容易。


不同的事件,然后就是这样。 - Blinx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接