Cómo usar NumberFormatInfo para eliminar paréntesis para valores negativos

Actualmente estamos usando lo siguiente para crear valores en dólares estadounidenses en nuestra aplicación web:

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

En este ejemplo, si dollarValue es 145, entonces veremos: $ 145. Si es -145, veremos ($ 145) en lugar de - $ 145. Tenga en cuenta que para nosotros, dollarValue es un doble, pero podría ser cualquier tipo de número. Yo creo que.

De todos modos, lo que quiero es que sea $ 145 o - $ 145.

Ahora, de acuerdo con mi investigación, podría ser posible hacer esto usando la clase NumberFormatInfo. No puedo averiguar cómo usarlo, y no puedo encontrar ningún ejemplo válido. Vi esta pregunta aquí:C # creando un NumberFormatInfo personalizado para mostrar "Gratis" cuando el valor de una moneda es $ 0.00 pero el ejemplo de MSDN vinculado a esta pregunta parece un poco diferente de lo que realmente quiero hacer.

Me doy cuenta de que tendré que hacer algo de lo siguiente:

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

donde es probable que aparezca algunosFormatProvider del tipo NumberFormatInfo. Ahora, lo que he hecho es esto:

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

... y obtengo una excepción "La instancia es de solo lectura". Mientras que la "documentación" de la propiedad CurrencyNegativePattern dice que puede establecer y OBTENER el valor, aparentemente no puede. Además, NumberFormatInfo es una clase sellada. No puedo crear fácilmente una nueva clase basada en ella y anular el valor.

Estoy en una pérdida en cuanto a cómo lidiar con esto. En este momento, mi solución es simplemente negar mi valor negativo y tener un resultado positivo que hagostring.Format(...) otra vez. Sí, me doy cuenta de que no hay un signo negativo delante de esto, pero, por supuesto, eso se resuelve fácilmente agregando un "-" delante del resultado según sea necesario.

¿Alguien podría brindarme un ejemplo práctico de cómo usar efectivamente la clase NumbefFormatInfo correctamente en esta situación? Gracias.

Respuestas a la pregunta(6)

Su respuesta a la pregunta