protected virtual void OnContractStateChanging(ContractStateChangeEventArgs e) { if (ContractStateChanging == null) { return; } var invList = ContractStateChanging.GetInvocationList(); var billingHandlers = invList .Where(d => d.Target is IBilling) .OfType <ContractStateChangeEventHandler>(); var otherHandlers = invList.Where(d => !(d.Target is IBilling)).OfType <ContractStateChangeEventHandler>(); bool allow = e.ChangeAllowed; foreach (var handler in otherHandlers) { handler(this, e); } e.ChangeAllowed = allow; foreach (var handler in billingHandlers) { handler(this, e); } }
// Подписка на изменение состояния контракта protected void BillingContractStateChanging(object sender, ContractStateChangeEventArgs e) { e.ChangeAllowed = _allowContractStateChange; }