Pergunta

Eu estou lidando com um WriteableBitmap em C #. Atualmente estou usando um bloco de código inseguro para acessar diretamente os pixels via WriteableBitmap.BackBuffer. Eu prefiro não depender da opção /unsafe, no entanto, assim que eu estou pensando em usar WriteableBitmap.WritePixels vez.

Existe alguma maneira de condicionalmente compilação na versão "inseguro" de tal forma que ele pode ser usado quando se utilizou a opção / inseguro para compilação, sem a necessidade de integração manual no meu arquivo de projeto?

Em suma, eu estou procurando algo ao longo das linhas de:

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

Detecção em tempo de execução é muito agradável; Mas isso significa que eu sempre precisam para compilar com /unsafe, e que significa que o código biblioteca exigiria atualizações do arquivo de projeto, que é menos útil.

Basicamente, eu quero manter a versão rápida para quando importa, mas tem uma versão razoável que apenas funciona, não importa o quê.

Foi útil?

Solução

Eu recomendo que você crie uma ou mais novas configurações usando o gerenciador de configuração, diga "Unsafe Debug" e "inseguro Release", que tem as opções existentes mais verificar inseguro e adicionar um símbolo condicional de inseguro. Em vez de alternar as opções inseguros você usaria a configuração inseguro.

Você também pode ter as configurações de mudar o nome do conjunto inseguro saída para que você teria dois conjuntos, dizem Bitmaps.dll e Bitmaps.Unsafe.dll, e um cliente do conjunto pode decidir qual se encaixa às suas necessidades melhores especificando que a montagem faz referência.

Outras dicas

Eu sugiro que você compilar com /unsafe /define:SAFE. Talvez haja outra maneira eu não estou ciente de.

Eu acho que você pode tentar este código

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

Em seguida, você pode usar o código como se deu no seu exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top