Convertendo de `NSDecimal` ou` NSDecimalNumber` para o tipo `decimal` de C #

Eu tenho um NSDecimalNumber da class SKProduct do SKProduct , e eu quero convertê-lo para o tipo decimal C # para minimizar a perda de precisão. Existe uma maneira simples de fazer uma coisa dessas?

Eu acho que minhas duas escolhas são:

  1. Suponha que eu entenda a implementação binária de cada um e faça minha própria conversão bit a bit, ou
  2. Faça com que NSDecimalNumber me dê uma string e depois faça a análise decimal .

Eu acho que a opção 1 é muito trabalhosa e provavelmente até frágil, então estou inclinado a escolher a opção 2. Mas isso também não parece o melhor que posso fazer. (Eu posso viver com o quão lento vai ser, porque isso acontece excepcionalmente raramente.

Só porque isso me tropeçou e me custou algum tempo, aqui estão alguns methods de extensão que eu agora uso para conversão entre NSDecimal e decimal . Isso foi bastante frustrante e estou surpreso que não há melhor maneira construída dentro

 public static class NumberHelper { public static decimal ToDecimal(this NSDecimal number) { var stringRepresentation = new NSDecimalNumber (number).ToString (); return decimal.Parse(stringRepresentation, CultureInfo.InvariantCulture); } public static NSDecimal ToNSDecimal(this decimal number) { return new NSDecimalNumber(number.ToString(CultureInfo.InvariantCulture)).NSDecimalValue; } } 

Representação de estruturas NSDecimal e NSDecimalNumber não são idênticas ao .NET System.Decimal .

A conversão é sempre possível, mas não é fácil. Se o desempenho não for um problema enorme, será melhor usar a representação de string para converter entre eles.