Patrones de diseño de validación de datos

Si tengo una colección de tablas de base de datos (en un archivo de Access, por ejemplo) y necesito validar cada tabla de esta colección con un conjunto de reglas que tiene reglas comunes en todas las tablas, así como reglas individuales específicas para una o un subconjunto de tablas, ¿alguien puede recomendar un buen patrón de diseño para examinar?

Específicamente, me gustaría evitar un código similar a:

void Main()
{
    ValidateTable1();
    ValidateTable2();
    ValidateTable3();
}

private void ValidateTable1()
{
    //Table1 validation code goes here
}

private void ValidateTable2()
{
    //Table2 validation code goes here
}

private void ValidateTable3()
{
    //Table3 validation code goes here
}

Además, he decidido usar log4net para registrar todos los errores y advertencias, de modo que cada método pueda ser declaradovoid y no necesita devolver nada. ¿Es una buena idea o sería mejor crear algún tipo deValidationException que captura todas las excepciones y las almacena en unList<ValidationException> antes de imprimirlos todos al final?

Encontréesta, que parece funcionar, pero espero encontrar algunos ejemplos de código para trabajar. ¿Alguna sugerencia? ¿Alguien ha hecho algo similar en el pasado?

Para algunos antecedentes, el programa se escribirá en C # o VB.NET y es muy probable que las tablas se almacenen en Access o SQL Server CE.

Respuestas a la pregunta(5)

Su respuesta a la pregunta