Я объявил событие в модуле HTTP, чтобы он опрашивал подписчиков на значение true / false, чтобы определить, следует ли ему продолжать работу по настройке ответа HTTP. Если только один подписчик отвечает true, тогда он выполняет свою логику.
Имеет ли это смысл?
Есть ли потенциальные подводные камни, которых я не вижу?
public class ResponseTweaker : IHttpModule {
// to be a list of subscribers
List<Func<HttpApplication, bool>> listRespondants = new List<Func<HttpApplication, bool>>();
// event that stores its subscribers in a collection
public event Func<HttpApplication, bool> RequestConfirmation {
add {
listRespondants.Add(value);
}
remove {
listRespondants.Remove(value);
}
}
public void Init(HttpApplication context) {
if (OnGetAnswer(context)) // poll subscribers ...
// Conditionally Run Module logic to tweak Response ...
}
/* Method that polls subscribers and returns 'true'
* if only one of them answers yes.
*/
bool OnGetAnswer(HttpApplication app) {
foreach (var respondant in listRespondants)
if (respondant(app))
return true;
return false;
}
// etc...
}