Please Enable JavaScript!
Gon[ Enable JavaScript ]

C# 리소스 관리하기

기타 언어/C# & MFC
반응형

Java 에서는 속성정보를 저장하기 위해 properties 파일을 만들어 저장해서 사용한다.

C# 에서는 코드가 아닌 리소스들을 저장할수 있게 지원해주는데 XML 형태로 저장된다.

저장할수 있는 형태는 아래 그림과 같이 이진데이타, 텍스트 파일, 오디오 또는 비디오파일,

문자열 테이블, 아이콘, 이미지, XML 파일이 있다.

저장된 리소스는 캡슐화 되어서 저장되는데 get 속성으로 읽기 전용이다.

 

첫번째는 프로젝트내에서 설정하고 접근하는 방법이며, 두번째는 DLL 형태로 만든 Resource

정보를 가져오는 방법이다.

첫번째 프로젝트 내에서의 간단한 사용방법이다. 먼저 리소스 정보를 입력한다.

왼쪽의 프로젝트에서 Properties 폴더를 확장하면 Resources.resx 있다. 이것을 클릭하면

리소스 편집창이 뜨는데 여기에 Name Value 에 각각 이름과 값을 넣는다.

또 다른 접근 방법은 프로젝트 > Properties > Resources 탭을 클릭하면 같은 화면이 나타난다.

다음은 소스에서 저장된 리소스를 가져와 본다. 소스에서 값을 가져오는 것은 간단하다.

[프로젝트명].Properties.Resources.[리소스명]

string provider = Han.Properties.Resources.provider;

 

만약 프로젝트를 어느 정도 진행한 상태에서 어쩔수 없이 Resource 이름을 변경해야될 때

소스에 참조하고 있는 내용들을 다 수정할 필요가 없다.

리소스 관리 창에서 Name 값을 변경하면 소스에 있는 동일한 이름이 자동으로 변경된다.

 

두번째는 사용할 리소스가 내용이 많고 프로젝트에서 공통적으로 사용하고자 할때가 있을것이다.

이럴 때 DLL 로 만들어 공통적으로 사용할수 있도록 하는 방법이다.

먼저 ClassLibary 로 프로젝트를 생성한다.

만든후에 리소스 정보를 수정하기 위해 Properties 폴더를 열었는데 리소스 파일이 존재하지

않았다. 이럴때는 프로젝트 속성정보로 가서 Resource 탭을 클릭해서 들어간다.

그러면 오른쪽 아래쪽에 클릭하라는 글자가 보일 것이다. 링크된 글을 클릭하면 자동으로

리소스설정을 위한 파일이 생성된다.

생성된 리소스 설정창에 값을 입력하고 컴파일 한다.

만들어진 DLL 을 참조할 프로젝트에 복사한다.

이것을 참조할 소스에서는 System.Reflection.Assembly 사용하여 dll 을 로드한후 리소스 데이터를

엑세스 할수 있는 ResourceManager 객체를 생성한다. 그리고 GetObject 함수에 파라미터로

키값을 넘겨주면 그에 해당하는 리소스 값을 리턴하게 된다.

ResourceManager 첫번째 파라미터로 [namespace].Properties.Resources 문자열을 넘기고

두번째는 로드한 dll 을 넘긴다.

System.Reflection.Assembly resData;
resData = System.Reflection.Assembly.LoadFrom("Resources.dll");
System.Resources.ResourceManager manager = new 
                    ResourceManager("Resources.Properties.Resources", resData);
string key = manager.GetObject("key").ToString();
반응형
Posted by 녹두장군1
,