最好是拥有一个带参数的泛型方法还是多个方法?
Better to have one generic method with a parameter or multiple methods?
我目前在我的 ObjectManager class 中有我的主窗体调用方法,它在不同的线程中从数据库加载一些指定的数据(使用 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;
}
}
编辑:
调用事件的地方:
有多种方法与此类似,可以加载一些东西 different/save 一些东西,然后使用不同的参数调用相同的事件。
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"));
}
}
我肯定会修改调用,这样您就不会传递神奇的字符串,那是不必要的脆弱。
如果每个事件都有一个单独的方法,那么维护、测试和调试会更容易。
我目前在我的 ObjectManager class 中有我的主窗体调用方法,它在不同的线程中从数据库加载一些指定的数据(使用 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;
}
}
编辑: 调用事件的地方: 有多种方法与此类似,可以加载一些东西 different/save 一些东西,然后使用不同的参数调用相同的事件。
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"));
}
}
我肯定会修改调用,这样您就不会传递神奇的字符串,那是不必要的脆弱。
如果每个事件都有一个单独的方法,那么维护、测试和调试会更容易。