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.

questionAnswers(1)

yourAnswerToTheQuestion