2013-03-22 1 views
0

У меня есть два метода C# RegisterTasks() и WaitForAll(), и всякий раз, когда вызывается метод RegisterTasks(), WaitForAll() должен быть вызван в том же блоке кода. Просто интересно, есть ли способ сказать компилятору C#, чтобы убедиться, что WaitForAll() всегда отображается вместе с RegisterTasks() и дает компиляционную ошибку в противном случае? Спасибо ~Как заставить 2 метода C# всегда отображаться вместе во время компиляции?

+1

Одним словом, нет. Вам придется следовать обходным решениям, предложенным Игорем или Джейсоном. Это не проблема, с которой компилятор может вам помочь, это один из * design * и упрощает использование вашего API. –

ответ

5

Уменьшить видимость RegisterTasks() и WaitForAll() и выставить метод, который называет их обоих.

+0

Я считаю, что идея состоит в том, что их нужно называть рядом друг с другом, но не последовательно. –

+1

Затем новый метод должен взять делегата для вызова между ними. – Igor

+0

Большое спасибо за ответ, и извините за мой поздний ответ :) – ztq121121

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 
} 
Смежные вопросы