In my project I used N Layer Architecture.In the service layer I return  an enum  for each action, for example for Add action I have an enum like this :  public enum AddStatus{    AddSuccessful,    Faild,    Exists}And for Edit I have this :    public enum EditStatus{    Successful,    Faild,    NotFound,    Exists}But sometimes I need a custom enum like this one :    public enum AddAssetFunctionStatus{    AddSuccessful,    Faild,    Exists,    ValueIsLess,    ItIsNotStatistical}and with custom enum I can show the appropriate message to the end user. Another way I use, which I think is good, is to pass an out string param to each action, like :   AddStatus Add(AddAccessDeviceViewModel accessDeviceViewModel,out string message);And in the controller I have : switch (result)        {            case AddStatus.AddSuccessful:                _uow.SaveChanges();                this.AddNotification(Messages.SaveSuccessfull, NotificationType.Success);                return RedirectToAction(MVC.Admin.AccessDevice.Index());            case AddStatus.Faild:                this.AddNotification(Messages.SaveFailed, NotificationType.Warning);                break;            case AddStatus.Exists:                this.AddNotification(Messages.DataExists, NotificationType.Info);                break;        }Which one is better?Use custom enum for each action that I need.pass an out param to the action that I need.
Use predefined vs. custom enums to return appropriate message from service layer
c#;comparative review;mvc;enum