0

VB.NET 2003 アプリを難読化しようとしています。

結果のアセンブリは難読化され、「実行」されますが、いくつかのエラーが発生します。

潜在的なリフレクションの問題をすべて解決しましたが、コンボボックスの選択された値を読み取ることができません。

「VTPair」のコレクションを使用して、Datasource プロパティを使用して Combobox をロードします (値を格納するための文字列型とオブジェクト型の 2 つのプロパティを持つ、私が作成したクラス)

このコンボボックスは、「男性 | M」または「女性 | F」のようなペアを処理します。

選択されているものを見ようとするとき、私は使用します if mycombo1.SelectedValue = "M" then

このコードは、難読化後に、型「XX」を文字列「M」にキャストできないという例外をスローします。

そこで、コードをより正確なものに変更し、選択した値を明示的に文字列にキャストしました。

if ctype(mycombo1.SelectedValue,string) = "M" then

しかし、エラーは同じです。

元のコードをデバッグすると、SelectedValue プロパティのタイプは「オブジェクト」ですが、文字列です。

オブジェクトでもあるプロパティを使用してみComboBox.SelectedItemましたが、今回は内部が「VTPair」型(自分のクラス)であり、その「値」プロパティ(オブジェクト型)にアクセスしようとし、文字列にキャストしようとしました再び失敗します。

このコードを「翻訳」して、Dotfucate 後に正常に動作するようにするアイデアはありますか?

ありがとう!

4

2 に答える 2

1

MSDNから:

ListControl.SelectedValueプロパティ:ValueMemberプロパティで指定されたメンバープロパティの値を取得または設定します。

したがって、SelectedValueプロパティを使用するときは、ValueMemberプロパティに設定したプロパティNAMEが使用されます。したがって、ComboBox.ValueMemberプロパティを介して指定したプロパティを難読化から除外する必要がある場合があります。

于 2010-03-02T06:02:13.300 に答える
0

VB の構文はわかりませんが、C# では、右側が typeof(MyType) であるものが必要になると思います。このようにして、名前が変更されたタイプと一致するようにタイプが難読化されます。

于 2010-03-01T14:18:25.457 に答える