public virtual T Modificar(T obj) { T o; try { o = Obter(obj.Id); } catch (ObjetoNaoRegistradoExcecao ex) { throw new ObjetoNaoRegistradoExcecao($"Não é possível modificar o registro '{obj.ToString()}' no repositório.", ex); } AntesDeModificar?.Invoke(obj); obj = dao.Alterar(obj); return(obj); }