Como ocultar métodos em F #?

No momento, estou implementando uma estrutura Spec em F # e quero ocultar os métodos Equals, GetHashCode etc. no meushould tipo, para que a API não seja confusa com eles.

Eu sei que em C # isso é feito, fazendo a classe implementar uma interface como esta:

using System;
using System.ComponentModel;

public interface IFluentInterface
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    bool Equals(object other);

    [EditorBrowsable(EditorBrowsableState.Never)]
    string ToString();

    [EditorBrowsable(EditorBrowsableState.Never)]
    int GetHashCode();

    [EditorBrowsable(EditorBrowsableState.Never)]
    Type GetType();
}

Eu tentei fazer o mesmo em F #:

type IFluentInterface = interface

    [<EditorBrowsable(EditorBrowsableState.Never)>]
    abstract Equals : (obj) -> bool

    [<EditorBrowsable(EditorBrowsableState.Never)>]
    abstract ToString: unit -> string

    [<EditorBrowsable(EditorBrowsableState.Never)>]
    abstract GetHashCode: unit -> int

    [<EditorBrowsable(EditorBrowsableState.Never)>]
    abstract GetType : unit -> Type 
end

Implementado no meu tipo:

        interface IFluentInterface with
        member x.Equals(other) = x.Equals(other)
        member x.ToString()    = x.ToString() 
        member x.GetHashCode() = x.GetHashCode()
        member x.GetType()     = x.GetType() 

mas sem sucesso.

Também tentei substituir os métodos no meu tipo e adicionar o atributo dessa maneira, mas isso também não funcionou.

Portanto, a questão permanece: como posso limpar minha API?

Editar:

Graças à ajuda (veja abaixo), consegui resolver o meu problema.

Em suma,.Equals e.GetHashCode pode ser oculto via[<NoEquality>] [<NoComparison>] mas isso também mudará a semântica.

A ocultação através dos atributos EditorBrowsable não funciona.

A única maneira de ter uma API limpa e ainda poder sobrecarregar métodos é tornar esses membros do método estáticos.

A classe resultante pode ser encontrada navegando dentro do meu projetoFSharpSpec.

O tipo em questão pode ser encontradoaqui.

Obrigado a todos que me ajudaram a resolver este problema.

Felicidades ...

questionAnswers(3)

yourAnswerToTheQuestion