最好有一个参数或多个方法的通用方法?

时间:2015-08-28 09:20:38

标签: c# events event-handling

我目前在我的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 个答案:

答案 0 :(得分:0)

我肯定会修改这些电话,因此你不会传递魔法字符串,这会让你感到不必要的脆弱。

如果每个事件都有单独的方法,则更容易维护,测试和调试。