2009-02-27 11 views
6

Ho a che fare con un WriteableBitmap in C#. Attualmente sto usando un blocco di codice non sicuro per accedere direttamente ai pixel tramite WriteableBitmap.BackBuffer. Preferirei non dipendere dall'opzione /unsafe, tuttavia, quindi sto considerando l'utilizzo di WriteableBitmap.WritePixels invece.Esiste un simbolo "preprocessore" corrispondente al flag/non sicuro?

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

Insomma 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 ciò significa che ho sempre bisogno di compilare con/unsafe e questo significa che il codice della libreria richiede gli aggiornamenti dei file di progetto, che è meno utile.

Fondamentalmente, voglio mantenere la versione veloce per quando è importante, ma ho una versione ragionevole che funziona solo non importa quale.

risposta

4

Si consiglia di creare una o più nuove configurazioni utilizzando il Configuration Manager, ad esempio "Debug non sicuro" e "Rilascio non sicuro", che hanno le opzioni esistenti e verificare Non sicuro e aggiungere un simbolo condizionale di UNSAFE. Invece di attivare le opzioni non sicure si utilizzerà la configurazione non sicura.

Si potrebbe anche fare in modo che le configurazioni cambino il nome di uscita dell'assembly non sicuro in modo da avere due assembly, ad esempio Bitmaps.dll e Bitmaps.Unsafe.dll, e un client dell'assembly può decidere quale si adatta meglio alle proprie esigenze specificando quale assemblaggio fa riferimento.

+0

Questo (proprio come il suggerimento del configuratore) sembra davvero abbastanza fattibile, grazie! –

1

Suggerirei di compilare con /unsafe /define:SAFE. Forse c'è un altro modo di cui non sono a conoscenza.

0

penso 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.

Problemi correlati