This repository contains sample code on how to implement the Specification pattern in .NET using modern language and framework features, with a possible workaround for contravariance and integration with the Repository and Unit of work design patterns.
For more details on how the patterns are implemented and what design choices were made, see my blog posts: