Como usar NumberFormatInfo para remover parênteses para valores negativos

No momento, estamos usando o seguinte para criar valores em dólares americanos em nosso aplicativo da web:

string.Format("{0:C0}", dollarValue );

Neste exemplo, se dollarValue for 145, veremos: $ 145. Se for -145, então veremos (US $ 145) em vez de - US $ 145. Note que para nós, dollarValue é um duplo, mas pode ser qualquer tipo de número. Eu acho que.

De qualquer forma, o que eu quero é que seja US $ 145 ou US $ 145.

Agora, de acordo com minha pesquisa, pode ser possível fazer isso usando a classe NumberFormatInfo. Não consigo descobrir como usá-lo e não consigo encontrar nenhum exemplo válido. Eu vi essa pergunta aqui:C # criando um NumberFormatInfo personalizado para exibir "Free" quando um valor de moeda é de US $ 0,00 mas o exemplo do MSDN vinculado a essa pergunta parece um pouco diferente do que eu realmente quero fazer.

Eu percebo que precisarei fazer algo do seguinte:

double dollarValue = -145d;
string myMoney = dollarValue.ToString( "C0", someIFormatProvider );

onde someIFormatProvider é provável do tipo NumberFormatInfo. Agora, o que eu fiz é isto:

NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString( "C0", ni );

... e recebo uma exceção "Instância é somente leitura". Enquanto a "documentação" para a propriedade CurrencyNegativePattern diz que você pode SET e GET o valor, aparentemente, você não pode. Além disso, NumberFormatInfo é uma classe selada. Não consigo criar facilmente uma nova classe baseada nela e substituir o valor.

Não sei como lidar com isso. Agora, minha solução é apenas negar meu valor negativo e ter um resultado positivo que eu faça ostring.Format(...) novamente. Sim, percebo que não há sinal negativo na frente disso, mas, claro, isso é facilmente resolvido adicionando um "-" na frente do resultado, conforme necessário.

Alguém poderia me fornecer um exemplo prático de como usar efetivamente a classe NumbefFormatInfo corretamente nessa situação? Obrigado.

questionAnswers(6)

yourAnswerToTheQuestion