Olá amigos, em parte eu concordo com e. heringer uma solução que adotei foi .....
Criar uma Classe chamada de BusinessClassException que herda de Exception
using System;
using System.Collections;
namespace Business
{
/// <summary>
/// This exception has all errors occurred in the business objects during data validation.
/// Every business object raise a BusinessClassException when it find an validation error
/// </summary>
public class BusinessClassException: Exception
{
#region private fields
/// <summary>
/// List of error messages that raised the exception
/// </summary>
private ArrayList m_Errors;
#endregion
#region constructors
/// <summary>
/// Generate an exception with the specified error messages
/// </summary>
/// <param name="msgs">Arraylist with error messages</param>
public BusinessClassException(ArrayList msgs)
{
m_Errors = msgs;
}
#endregion
#region properties
/// <summary>
/// Get error messages
/// </summary>
public ArrayList Errors
{
get
{
return m_Errors;
}
}
#endregion
}
}
e pego todas as exceções de regra de negocio atraves dessa classe e listo todas na camada de apresentação .....
Exemplo de como tratar esses errors na camada de negocio ....
namespace Business
{
/// <summary>
/// Summary description for Form.
/// </summary>
public class Form
{
private string _fileName;
private ArrayList _errors = new ArrayList();
/// <summary>
/// Form FileName
/// </summary>
public string FileName
{
get
{
return _fileName;
}
set
{
if (value != null && value != String.Empty)
_fileName = value;
else
_errors.Add("Form.InvalidFileName");
}
}
public void Validate()
{
if (_errors.Count > 0)
throw new BusinessClassException(_errors);
}
}
}
Espero ter ajudado
Abraço[]s
Artur Araújo