Come sostituire facilmente/rapidamente il float per il doppio (ad esempio) per la compilazione su due target diversi utilizzando queste due scelte particolari di tipi primitivi?Come sostituire temporaneamente un tipo primitivo con un altro durante la compilazione su target diversi?
Discussione: Ho una grande quantità di codice C# in fase di sviluppo che ho bisogno di compilare in alternativa utilizzare float, double o decimali a seconda del caso d'uso dell'assembly di destinazione.
Utilizzare qualcosa come "classe MYNumber: Double" in modo che sia solo necessario modificare una riga di codice non funziona come Double è sealed, e ovviamente non c'è #define in C#. Anche il peppering del codice con le istruzioni #if #else non è un'opzione, ci sono troppi operatori Math di supporto/codice relativo che usano questi particolari tipi primitivi.
Sono in perdita su come fare questo compito apparentemente semplice, grazie!
Edit: Solo un breve commento in relazione alla boxe menzionato in Kyles risposta: Purtroppo ho bisogno di evitare la boxe, soprattutto dal momento che vengono scelti del galleggiante quando è richiesta la massima velocità, e decimali, quando la massima precisione è la priorità (e prendendo il 20x + colpo di prestazione è accettabile). La boxe probabilmente escluderebbe i decimali come una scelta valida e in qualche modo sconfiggerà lo scopo.
Edit2: Per riferimento, quelli che suggeriscono i generici come una possibile risposta a questa domanda notano che ci sono molti problemi che contano i farmaci generici (almeno per i nostri bisogni). Per una panoramica e ulteriori riferimenti vedere Using generics for calculations
+1 Bella domanda, qui sono state presentate molte soluzioni diverse, tutte molto simili, ma comunque interessanti. Potrei usarlo ora in futuro – LorenVS