Estou implementando este contrato simples incorretamente?

Este é o meu código:

public class RegularPolygon
{
    public int VertexCount;
    public double SideLength;

    public RegularPolygon(int vertexCount, double sideLength)
    {
        Contract.Requires(vertexCount >= 3);
        VertexCount = vertexCount;
        SideLength = sideLength;
    }

    [ContractInvariantMethod]
    private void RegularPolygonInvariants()
    {
        Contract.Invariant(VertexCount>=3);
    }

}

Eu tentei com os doisContract.Requires eContract.Invariant métodos para impedir que a variável vertexCount se torne menor ou igual a 2; no entanto, ainda sou capaz de inicializar um RegularPolygon com 2 ou menos lados. Meu teste NUnit (simplificado) fica assim:

[TestFixture]
class TestRegularPolygon
{
    private RegularPolygon _polygon;

    [SetUp]
    public void Init()
    {
        _polygon = new RegularPolygon(1, 50);
    }

    [Test]
    public void Constructor()
    {
        Assert.That(_polygon.VertexCount,Is.GreaterThanOrEqualTo(3));
    }

}

O teste acima também passa e não consigo entender o porquê!

No começo, pensei que o ReSharper poderia estar atrapalhando algo, porque fica fora da linha e exibe essa mensagem sempre que tento usar um método noContract namespace:

A chamada do método é ignorada. O compilador não gerará a chamada do método porque o método é condicional ou é um método parcial sem implementação.

Mas suspender o R # e executar os testes no NUnit tem o mesmo resultado, sem erros ou avisos no VS. Portanto, suponho que isso ocorre apenas porque o ReSharper ainda não tem compatibilidade de destaque para contratos de código.

Examinei a documentação e, até onde sei, não deveria estar tendo esse problema.

Estou usando contratos de código incorretamente ou meu ambiente está impedindo que ele funcione de alguma forma?

Obrigado.