2013-06-17 3 views
3

나는 내 시스템에서 dll을 사용하려고한다. 메소드 중 하나는 객체 브라우저에 정의 된 사전 객체를 반환합니다..net 사전 객체 형

"System.Collections.Generic.Dictionary<<string,1.5>>" 

1.5는 무엇입니까? 또는 dll을 의도하지 않은 사용으로부터 잠그는 보안 메커니즘이 있습니까?

+0

편집 해 주셔서 감사합니다 Blorgbeard –

+0

사전을 확장하면 개체 브라우저에서 무엇을 볼 수 있습니까? 선언 된 반환 유형은 무엇입니까? – svick

+0

@svik. 객체를 확장하면 Dictionary에 차례로 List 등이 포함 된 KeyvaluePair가 들어 있다는 것을 알 수 있습니다. 상당히 깊은 계층 구조입니다. 하지만 형식으로 1.5 사용할 수 없으므로이 개체를 할당하는 방법을 모르겠습니다. –

답변

3

"1.5"는 일반적인 .NET 언어에서 유효한 유형 이름이 아니며 유형 이름을 문자로 시작해야한다고 주장합니다. 렉서의 작업을 간단하게 만드는 것이 중요합니다. 컴파일러는 프로그램을 구문 분석하기 전에 소스 코드를 토큰으로 사전 처리합니다. 렉서는 "1.5"를 식별자가 아닌 숫자로 식별합니다.

CLR에는 훨씬 더 느슨한 규칙이 있지만 형식 이름에 대해서는 아무 것도 없습니다. 이것은 obfuscators의 장점을 취합니다. 어셈블리를 빌드 한 후 실행하여 어셈블리에서 소스 코드를 리버스 엔지니어링하지 못하게하는 프로그램입니다. Reflector 및 ILSpy와 같이 .NET에서 사용할 수있는 몇 가지 매우 유용한 디 컴파일러가 있습니다. obfuscator는 그들을 물리 칠 수 있도록 고안되었습니다.

사용중인 어셈블리가 난독 화 된 확률이 높습니다.

+0

'1.5'는 .NET 컴파일러/파서의 유효한 유형 이름이 아니지만 .NET 런타임에는 유효합니까? –

+0

@SinaIravanian 나는 Hans가 그가 말한 것을 정확히 의미한다고 생각한다. 가장 일반적인 .Net 언어 (C#, VB.NET, F #, ...)에서는 '1.5'가 유효하지 않다. 하지만 IL에서는 유효한 이름입니다. – svick