Taking the following cases in consideration.Witch one would you prefer and why?Suggestions appreciated.Using Delegatesprivate void cmdDelete_enterClick(object sender, EventArgs e)    {                   var accountManager = new BLAccountManager();    accountManager.OnAccountInUse = (msg) => MessageBox.Show(msg);    accountManager.OnConfirmation = (msg) =>    {        var dialogResult = MessageBox.Show(msg);        return (dialogResult == DialogResult.OK);    };    accountManager.DeleteAccount(selectedAccountId);} public class BLAccountManager {public Action<string> OnAccountInUse;public Func<string, bool> OnConfirmation;public void DeleteAccount(string accountId){    var bookingsUsingAccount = GetBookingsUsingAccount(accountId);    if (bookingsUsingAccount.Count > 0)    {                   OnAccountInUse(msg);        return;    }    BankAccount account = GetAccount(accountId);    if (OnConfirmation(confirm))    {        account.Delete(false);    }}}Using Interfaces  public interface IUICallback  {     void SendMessage(string message,string caption);         bool Confirmation(string message,string caption);  }public class WinFormsUICallback : IUICallback{  public void SendMessage(string message, string caption)  {    MessageBox.Show(message, caption, MessageBoxButtons.OK,                    MessageBoxIcon.Exclamation);  }  public bool Confirmation(string message, string caption)  {    DialogResult result = MessageBox.Show(message);    return result == DialogResult.OK;  }}  private void cmdDelete_Click(object sender, EventArgs e)  {        IUICallback uiCallback = new WinFormsUICallback();    var accountManager = new BLAccountManager(uiCallback);      accountManager.Delete(selectedAccountId);  }  public void Delete(string accountId)  {    BookingList bookingsUsingAccount =     bookingManager.GetBookingsUsingAccount(accountId);    if (bookingsUsingAccount.Count > 0)    {                   _uiCallback.SendMessage(msg, caption);            return;    }    if (_uiCallback.Confirmation(confirmationMessage, caption))        {           account.Delete(false);    }   }
Business Layer - UI communication
c#;.net