Olá Paulo,
Primeiro muito obrigada pela ajuda.
Então, tentei fazer isso que você sugeriu.
Quando eu herdei o JsonConverter e implementei os métodos obrigatórios, alterei o CanConvert:
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(decimal));
}
Mas o métodos ReadJson e WriteJson eu não sabia muito o que fazer. Peguei algumas coisas no internet, mas ficou dando erro (Exception of type 'System.StackOverflowException' was thrown.)
Como ainda tenho muita dificuldade com JSON e tinha que entregar ontem, tive que fazer uma "pequena gambiarra" usando o Replace:
public static decimal LerPrecoProduto()
{
Console.WriteLine("Digite o Preço do Produto: ");
var v = Convert.ToDecimal(Console.ReadLine().Replace(".", ","));
return Convert.ToDecimal(v);
}
Como ele está pegando o padrão brasileiro e obriguei ele a trocar o ponto pela vírgula e assim ele grava o ponto na casa decimal certa.
Só pra você entender, o programa vai ser usado por americanos, mas o SO está em português nessas máquinas e não se pode trocar o idioma das máquinas. É um projeto console. Então o que eu queria era que o executável ignorasse o idioma do SO e usasse a cultura en-US, para assim permitir ao usuário entrar com os dados no formato do país dele.
Tentei usar o CultureInfo:
CultureInfo ci = CultureInfo.CreateSpecificCulture("en-US");
p.Preco.ToString("C", ci);
Tentei mudar o cultura no AppConfig:
<add key="CMSDefaultUICulture" value="en-US" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" />
Mas nada funcionou! Então usei o Replace e entreguei desse jeito meio GoHorse mesmo, mas não era o ideal =/
Muito obrigada novamente =)