StringlyTyped.ValueObjects (nuget): This package contains a very simple implementation of a ValueObject in .NET.  A ValueObject is a strongly typed (strongly, not stringly) domain object that is immutable.  Instead of `int customerId = 42;` we have `var customerId = CustomerId.From(42);`  Validation is in just one place. You can't introduce bad objects into your domain, therefore you can assume that in your domain every ValueObject is valid. Handy.
Keywords: stringlytyped|primitive|obsession|valuetype|valuetypes|valueobj|valueobjects|ddd|validation|value-object