Domanda

ho a che fare con un WriteableBitmap in C #. Attualmente sto usando un blocco di codice non sicuro per accedere direttamente i pixel via WriteableBitmap.BackBuffer. Preferirei non dipendono dall'opzione /unsafe, tuttavia, così sto pensando di utilizzare WriteableBitmap.WritePixels invece.

C'è un modo di condizionalmente compilazione nella versione "non sicuro", in modo che possa essere utilizzato quando è stata utilizzata l'opzione / non sicuro per la compilazione, senza richiedere l'integrazione manuale nel mio file di progetto?

In breve sto cercando qualcosa sulla falsariga di:

#if UNSAFE
   //my unsafe version
#else
   //the supposedly safe version goes here
#endif

Rilevamento in fase di esecuzione è troppo bello; ma questo significa che ho sempre bisogno di compilare con /unsafe, e questo significa che il codice della libreria richiederebbe aggiornamenti dei file di progetto, che è meno utile.

In sostanza, voglio mantenere la versione veloce per quando conta, ma hanno una versione ragionevole che solo funziona non importa quale.

È stato utile?

Soluzione

Vi consiglio di creare una o più nuove configurazioni che utilizzano il gestore della configurazione, dire "Unsafe Debug" e "Unsafe di uscita", che hanno le opzioni esistenti più controllano non sicuro e aggiungere un simbolo condizionale di UNSAFE. Invece di commutare le opzioni non sicuri si può usare la configurazione non sicura.

Si potrebbe anche avere le configurazioni cambiare il nome di uscita del gruppo non sicuro in modo che avrebbe due assemblee, dicono Bitmaps.dll e Bitmaps.Unsafe.dll, e un cliente del gruppo può decidere che si adatta meglio le sue esigenze specificando che il montaggio fa riferimento.

Altri suggerimenti

Io suggerirei che si compila con /unsafe /define:SAFE. Forse c'è un altro modo io non sono a conoscenza.

Credo che si potrebbe provare questo codice

#define UNSAFE
#undef UNSAFE // comment this line out if you want to compile the save version

Quindi è possibile utilizzare il codice come avete dato nel tuo esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top