Problema de elenco após ofuscação com o Dotfuscator
-
23-09-2019 - |
Pergunta
Estou tentando ofuscar algum aplicativo VB.NET 2003.
Os montagens resultantes são ofuscados e "executados" com alguns erros.
Limpei todos os problemas de reflexão em potencial, mas não estou capaz de ler o valor selecionado de um ComboBox.
Carrego o ComboBox usando suas propriedades de fonte de dados, usando uma coleção de "vtpair" (uma classe criada por mim com 2 propriedades: um do tipo de string e outro do tipo de objeto para armazenar o valor)
Este alça de combinação combax como "masculino | m" ou "fêmea | f".
Ao tentar ver o que é selecionado, eu uso if mycombo1.SelectedValue = "M" then
Esse código, após a ofuscação, me lança uma exceção que não pode lançar o tipo "xx" para string "m".
Então, mudei o código para algo mais correto, lançando explicitamente o valor selecionado para a string:
if ctype(mycombo1.SelectedValue,string) = "M" then
Mas o erro é o mesmo.
Debugin meu código original, a propriedade SelectedValue é do tipo "objeto", mas é uma string.
Eu tentei usar o ComboBox.SelectedItem
Propriedade que também é um objeto, mas desta vez o que está dentro é do tipo "VTPAIR" (minha própria classe) e, em seguida, tenta acessar sua propriedade "Value" (que é do objeto de tipo) e tentar lançar para a string falha novamente.
Alguém tem uma idéia de "traduzir" esse código de código para funcionar bem depois de dotfucate?
Obrigado!
Solução
De msdn:
ListControl.SelectedValue Propriedade: obtém ou define o valor da propriedade Membro especificada pela propriedade Valuember.
Portanto, qualquer nome de propriedade que você definir para a propriedade ValuEmember será usado quando você usar a propriedade SelectedValue. Portanto, você pode precisar excluir da ofuscação, a propriedade que você especificar por meio da propriedade ComboBox.ValuEmember.
Outras dicas
Não tenho certeza da sintaxe do VB, mas em C# acho que você gostaria de algo onde o lado direito é o tipo de (MyType). Dessa forma, o tipo será ofuscado para corresponder ao tipo renomeado.