Me gusta la sensación de la clase Assert, pero quería algo que sirviera más como un marco de validación general. Comencé con Roger Alsing de article sobre el uso de métodos de extensión, y ahora tienen un sistema que funciona como:
Enforce.That(variable).IsNotNull();
Enforce.That(variable).IsInRange(10, 20);
Enforce.That(variable).IsTypeOf(typeof(System.String));
etc.
Si alguna aplicación de la falla, se produce una excepción. He estado considerando refactorizar para poder incorporar una evaluación no crítica que no arroje una excepción. Algunos como Check.That como una variante de Enforce.That devolvería booleanos, pero tienen métodos de extensión con firmas idénticas.
Lo que me gusta de este enfoque, hasta ahora, es que puedo usar estos en mis pruebas unitarias, así como para las preocupaciones de validación previa y posterior a mi código actual sin hacer referencia a Microsoft.VisualStudio.QualityTools. Montaje UnitTestFramework. Lo puse en mi ensamblado raíz para mi marco de aplicación, y Enforce está en la raíz, por lo que es muy fácil de acceder.