Eu tenho uma classe pública chamada ContaCorrente e uma outra classe chamada Banco. A classe Banco tem uma função que cria uma ContaCorrente e retorna ela (public BankAccount CreateBankAccount(...)).
Toda vez que uma conta é criada com sucesso ela incrementa uma uma variável static dentro de Banco. Acontece que é possível instanciar uma ContaCorrente sem a classe banco. Com isso o contador não é atualizado. Já tentei deixar a classe ContaCorrente Interna mas aí da problema de compilação no Banco pq a função CreateBankAccount é publica e dá problema de acessibilidade.
No c++ eu conseguia usar ponteiros pra resolver esse problema (deixava a função void e o ponteiro inicializava essa variável que ficava fora da função e era passada como argumento). Eu sei que poderia deixar o construtor de ContaCorrente interno e criar um construtor vazio que dispara um Exception (assim obrigo ele a usar a Classe Banco), mas gostaria de ter uma outra solução.