2013-03-22 24 views
0

我有两个C#方法RegisterTasks()和WaitForAll(),并且每当调用RegisterTasks()时,WaitForAll()也必须在同一个代码块中调用。想知道是否有办法告诉C#编译器确保WaitForAll()总是与RegisterTasks()一起出现,否则会给出编译错误? 谢谢〜如何强制2个C#方法在编译时总是一起出现?

+1

一句话,没有。您必须遵循Igor或Jason建议的解决方法。这不是编译器可以帮助你的问题,它是* design *之一,并使你的API易于使用。 – 2013-03-22 04:00:20

回答

5

降低RegisterTasks()WaitForAll()的可见性,并公开一个调用它们的方法。

+0

我相信这个想法是,他们必须彼此靠近,但不是连续的。 – 2013-03-22 04:46:55

+1

然后,新的方法应该采取委托调用之间。 – Igor 2013-03-22 04:49:32

+0

非常感谢回复,并对我迟到的回应感到抱歉:) – ztq121121 2014-08-12 03:43:48

0

不需要。您需要正确记录合同并相信最终用户正确使用这些方法。

2

简短的回答,正如其他人所说的,不是。

我认为这些方法是分开的,因为调用者可能希望在它们之间执行其他代码。您可能希望考虑创建一个将委托作为参数的组合方法,然后在需要时调用该委托。

0

不,但你可以做一些设计。例如:

public void RegisterTasks(){ 
    // do something 
    WaitForAll(); 
} 

或者

public void RegisterTasks(){ 
    // do something 
    privateWaitForAll(); 
} 
public void WaitForAll(){ 
    // do something 
    privateWaitForAll(); 
} 
private void privateWaitForAll(){ 
    // do something 
} 
相关问题