[C#] 중복된 Key를 허용하며, Key로 정렬 된 해쉬맵(Dictionary)

C#의 자료구조 중 Key-Value 컨테이너는 Dictionary입니다. 경우에 따라 Key로 정렬된 Dictionary는 SortedDictionary 클래스로써 C#에서 기본적으로 제공하고 있습니다. 그런데, Dictionary이므로 Key가 중복될 수 없습니다. 중복된 값을 정렬해서 저장하기 위해서는 Set 자료 구조를 이용해야 합니다. 그런데, Set는 Key만을 저장할 수 있고 Value는 저장할 수 없습니다. 중복된 Key를 허용하면서, Key로 정렬된 컨테이너는 기본적으로 C#에서 제공하지 않습니다. 하지만 두개의 클래스를 조합하면 가능한데, SortedSet과 Tuple입니다. 이 두개의 클래스를 통해 중복된 Key를 허용하면서, Key로 정렬된 컨테이너에 대한 클래스는 아래와 같습니다.

이 클래스의 활용 예는 아래의 코드와 같습니다.

Add 함수의 첫번째는 Key이고 두번째는 Value입니다. Key의 순서대로 정렬되어 있는지 확인하기 위해 아래의 코드를 통해 살펴볼 수 있습니다.

위 코드의 실행 결과는 아래와 같습니다.


Sorted List
10 100.1
10 1000.1
40 100.4
50 200.5
70 2100.7
80 20.8

Min: (10, 100.1), Max: (80, 20.8)

[C#] ActiveX 객체가 담긴 파일의 경로 얻기

ActiveX 객체는 ocx나 dll 파일에 담겨 있는데요. 이 ActiveX 객체를 등록(regsvr32.exe를 통해 직접 등록되거나 설치 파일 등을 통해 등록)될 경우 객체 ID를 통해 해당 ActiveX 파일의 전체 경로를 파악해야 할 필요가 있습니다. 이때 사용하는 함수입니다.

위의 방식은 현재 Windows 10 64Bits 환경에서 작동하는 것을 확인했습니다. 다른 환경에서도 정상적으로 작동하는지 확인이 필요한데요. 혹 Win10 64Bits 환경 이외에서도 어떻게 작동하는지 댓글을 통해 언급해 주시면 좋겠습니다.

위의 함수는 아래처럼 사용할 수 있습니다.