2010-03-01 5 views
0

일부 VB.NET 2003 앱을 난독 화하려고합니다.Dotfuscator로 난독 화 한 후 캐스팅 문제가 발생했습니다.

결과 어셈블리가 난독 화되어 일부 오류가 발생하여 "실행"됩니다.

모든 잠재적 인 반사 문제를 치료했지만 선택한 값을 읽을 수 없습니다.

나는 "VTPair"(2 곳으로 나를 만든 클래스 : 문자열 유형 중 하나와 객체 유형의 다른 값을 저장하는)의 컬렉션을 사용하여 자신의 데이터 소스 속성을 사용하여 콤보 상자를로드

이 콤보를 "Male | M"또는 "Female | F"와 같은 쌍을 처리하십시오. 선택을 확인하려고 할 때

, 나는 난처 후, 나에게 문자열 "M"으로 유형 "XX"를 캐스팅 할 수없는 예외가 발생,

이 코드 if mycombo1.SelectedValue = "M" then를 사용합니다.

그래서, 명시 적으로 String으로 선택한 값을 캐스팅, 더 정확한 무언가에 코드를 변경 :

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

그러나 오류는 동일합니다.

내 원래 코드를 Debugin SelectedValue 속성 "Object"유형이지만 문자열입니다.

또한 개체 인 ComboBox.SelectedItem 속성을 사용해 보았습니다. 이번에는 "VTPair"(내 자신의 클래스) 유형이고 그 다음에 Object 유형 인 "Value"속성에 액세스하려고 시도했습니다. 문자열에 캐스트하려고하면 다시 실패합니다.

Dotfucate 후에도이 코드 조각을 "번역"하여 OK로 작동시키는 사람이 있습니까?

감사합니다.

+0

값을 읽을 때의 예외를 제외하고는 UI가 올바른지, 예기치 않은 값이 콤보 상자에 표시됩니까? – Timores

답변

1

:

ListControl.SelectedValue 특성 : 가져 ValueMember 또는 속성에 의해 지정된 부재 속성 값을 설정한다.

ValueValue 속성을 사용할 때 ValueMember 속성에 대해 설정 한 속성 NAME이 사용됩니다. 따라서 ComboBox.ValueMember 속성을 통해 지정하는 속성을 난독 화에서 제외해야 할 수 있습니다.

+0

텍스트/값 쌍으로 전체 클래스를 난독 처리에서 제외하고 작업했습니다. 하지만 저는 ValueMember 속성이 문제가되는 것을 결코 생각하지 않았습니다. 고마워요! – Romias

0

VB 구문을 모르지만 C#에서는 오른쪽이 typeof (MyType) 인 곳을 원한다고 생각합니다. 이렇게하면 형식이 이름이 바뀐 형식과 일치하도록 난독 화됩니다. MSDN에서

+0

이것은 반사 문제가있는 경우 매우 TRUE입니다. 난독 처리 후에 GetType.ToString()을 사용하고 비교하면 ... 작동하지 않습니다. 하지만 제 경우는 성병 문제입니다. – Romias

+0

myCombo.SElectedValue.ToString()? –