2011-01-11 4 views
2

아래와 같이 코드에서 컴파일러가 정의한 상수를 사용할 수 있습니까?코드의 컴파일러 상수 액세스

#If DEALER_DEBUG = "ID12345" Then 
     If(Dealer.ID = DEALER_DEBUG) Then 
     'Do something 
     End If 
#End If 

일괄 처리를 실행 중이며 고객 데이터에 문제가 있습니다. 나는 그 고객에 대해서만 특별한 코드를 추가하고 싶지만, 나는 다른 고객을 디버깅 할 필요가있을 때 쉽게 고객 ID를 바꿀 수 있도록 코드를 여기에두고 싶다. 컴파일 된 DLL의

소스 코드는 다음과 같이 표시됩니다 :

 If(Dealer.ID = "ID12345") Then 
     'Do something 
     End If 
+0

VB 구문은 코드에 다음과 같은 헛소리가 없으면 이미 추악합니다. –

+0

하하. 동의 함 :-) –

답변

4

번호 컴파일러 지시어는 그냥 컴파일러에 지시합니다. 생성 된 일리노이 코드에는 포함되지 않으므로 런타임에 액세스 할 수 없습니다.

+1

물론, 변수로 생성되지는 않지만 C++ #defines와 같은 방식으로 전 처리기 치환으로 사용할 수 있는지 묻는 것 같습니다. – Rup

+0

Rup, 네 말이 맞아. 위의 질문에서 if 결과 문은 실제로 "If (Dealer.ID ="ID12345 ") Then ..."으로 컴파일됩니다. –

0



당신은 #을 사용하여 번갈아 Compile->Advanced Compile Options->Custom Constants에서 프로젝트 속성에서 사용자 정의 컴파일러 상수를 정의하거나 할 수 있다면 당신은 컴파일 시간의 #if에서 사용할 수 있지만 런타임에 사용할 수 없습니다 Const 지시어.

이렇게하는 것이 더 좋은 방법이 있습니다. 정확히 무엇을 하려는지 정확히 알지 못하지만 추가 기능을 허용 할 수있는 클라이언트에 플러그인 어셈블리를 제공 할 수있는 일종의 팩트 패턴 + 플러그인 + 구성을 고려할 수 있습니다.

확장 성있는 앱을 만드는 데는 더 많은 작업이 필요 하겠지만, 이러한 종류의 작업을 수행해야하는 경우 나중에 다시 돌아가서 리팩터링해야하는 것보다 처음부터 확장 가능하도록 작성하는 것이 좋습니다.