Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最好使用一个带有参数的泛型方法,还是使用多个方法?_C#_Events_Event Handling - Fatal编程技术网

C# 最好使用一个带有参数的泛型方法,还是使用多个方法?

C# 最好使用一个带有参数的泛型方法,还是使用多个方法?,c#,events,event-handling,C#,Events,Event Handling,目前,我的ObjectManager类中有我的主窗体调用方法,它将从数据库中的不同线程(使用Task.Factory.StartNew())加载一些指定的数据,然后抛出一个事件,让主窗体知道何时完成,以便窗体可以更新其控件 目前,我通过一个事件让主窗体知道,该事件向它传递了一个参数,其中包含已更改的内容(Opportunity/quote/job等) 我想知道是否最好为每种类型的更改创建单独的事件 DataChanged事件参数: class DataChangedEventArgs : Eve

目前,我的ObjectManager类中有我的主窗体调用方法,它将从数据库中的不同线程(使用Task.Factory.StartNew())加载一些指定的数据,然后抛出一个事件,让主窗体知道何时完成,以便窗体可以更新其控件

目前,我通过一个事件让主窗体知道,该事件向它传递了一个参数,其中包含已更改的内容(Opportunity/quote/job等)

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

DataChanged事件参数:

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"));
    }
}
类对象管理器
{
公开上市机会;
公共void loadOpportunityDetails(int\u opportunityID)
{
int index=_opportunities.FindIndex(
代表(机会)
{
return opportunity.opportunityID==\u opportunityID;
});
//加载给定商机的详细信息
DataChangedEvent(即新的DataChangedEventArgs(“OpportunityDetails”);
}
}

我当然会修改调用,这样您就不会传递神奇的字符串,这是不必要的脆弱


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

能否显示调用此事件的代码?如果为每个事件执行的操作不完全相似,我肯定希望它们采用不同的方法。即使这些操作非常相似,并且将它们放在一个方法中是合理的,使用
Enum
也比使用匹配imo的字符串要好。添加了该代码。该类中也有类似的函数,它们执行不同的操作,然后调用相同的事件,但它们都会加载不同的事件