Check this issue in the NetTopologySuite Issues. You can project.
https://github.com/NetTopologySuite/NetTopologySuite/issues/346
Adding to airbreather's comment/code, you will need to change your ICoordinateSystemServices to CoordinateSystemServices AND SRIDs 4326 and 3857 are not already predefined.
/*
static readonly ICoordinateSystemServices _coordinateSystemServices = new CoordinateSystemServices(
new CoordinateSystemFactory(), new CoordinateTransformationFactory(),
new Dictionary<int, string>
*/
static readonly CoordinateSystemServices _coordinateSystemServices = new CoordinateSystemServices(
new CoordinateSystemFactory(), new CoordinateTransformationFactory(),
new Dictionary<int, string>
{
[4326] = @"
GEOGCS[""WGS 84"",
DATUM[""WGS_1984"",
SPHEROID[""WGS 84"", 6378137, 298.257223563,
AUTHORITY[""EPSG"", ""7030""]],
AUTHORITY[""EPSG"", ""6326""]],
PRIMEM[""Greenwich"", 0,
AUTHORITY[""EPSG"", ""8901""]],
UNIT[""degree"", 0.0174532925199433,
AUTHORITY[""EPSG"", ""9122""]],
AUTHORITY[""EPSG"", ""4326""]]
",
//(additional projections....)
""
}
public static Geometry ProjectTo(this Geometry geometry, int srid)
{
var transformation = _coordinateSystemServices.CreateTransformation(geometry.SRID, srid);
return Transform(geometry, transformation.MathTransform);
}