Como faço para implementar o padrão dispor em c # ao acondicionar um objeto COM Interop?

Minha classe contém um objeto da Interop e chama um método que faz com que aloque o material. Ele também expõe um método para liberar essas coisas, então espero chamar isso em Dispose ():

class MyClass : IDisposable
{
    private DllName.ComClassName comInstance;

    void SomeMethod()
    {
        comInstance = new DllName.ComClassName();
        comInstance.AllocStuff();
    }

    public void Dispose()
    {
        comInstance.FreeThatStuff();
    }
}

Agora, eu deveria expandir tudo isso para seguir o padrão Dispose. Não tenho nenhum outro recurso descartável ou não gerenciado para liberar, portanto, supondo que o comInstance seja gerenciado (não é isso que a Interop faz, não é gerenciado no gerenciado?), Acho que o padrão se desativa para:

public void Dispose()
{
    if (comInstance != null)
    {
        comInstance.FreeStuff();
        comInstance = null;
    }
}

Quais vazamentos a menos que eu chame explicitamente Dispose () em instâncias de MyClass, o que tornaria o padrão Dispose falho? Então isso significa que a instanciação deve ser não gerenciada, e o padrão se desativa para:

public void Dispose()
{
    DisposeComInstance();
    GC.SuppressFinalize(this);
}

~MyClass()
{
    DisposeComInstance();
}

private void DisposeComInstance()
{
    if (comInstance != null)
    {
        comInstance.FreeStuff();
        comInstance = null;
    }
}

EDITAR:

Para evitar bagunçar minha turma com o padrão completo, eu poderia apenas selar minha turma?Como sei que ComClassName (e em geral qualquer classe) não é gerenciado?

questionAnswers(3)

yourAnswerToTheQuestion