2008-08-27 2 views
13

현지화를 구현하는 응용 프로그램이 있습니다.C#의 리소스 파일에 대한 동적 참조

이제 resouce 파일에서 이름을 동적으로 참조해야합니다. foo는 = "안녕하세요", 막대 = "세계"일반적으로

= "잔인한"와 바즈, 나는 같은 참조합니다 :

내가 Login.resx라는 리소스 파일, 문자열의 번호를 가지고 가정 문자열 결과 = Login.foo; 및 결과 == "hello";

내 문제는 코드 타임에 foo, bar 또는 baz를 참조하고 싶은지 모르겠다. "foo", "bar"또는 "baz"중 하나가 포함 된 문자열이 있습니다.

다음과 같이해야합니다.

로그인 [ "foo"];

리소스 파일에서 문자열을 동적으로 참조 할 수있는 방법이 있는지 알고 있습니까?

답변

19

당신은 Login.resx에 대한 인스턴스 A ResourceManager해야합니다 :

var resman = new System.Resources.ResourceManager(
    "RootNamespace.Login", 
    System.Reflection.Assembly.GetExecutingAssembly() 
) 
var text = resman.GetString("resname"); 

는 그것은 IDE에 의해 생성 된 리소스 파일의 코드 숨김 파일의 생성 된 코드를보고 도움이 될 수 있습니다. 이 파일에는 기본적으로 내부 리소스 관리자에 대한 쿼리를 만드는 각 리소스에 대한 읽기 전용 속성이 포함되어 있습니다. 당신은 내가했던 것처럼 폴더 App_GlobalResources에서 리소스 파일을 넣으면

+10

또는 더 쉽게, 당신은 리소스 자체에 대한'ResourceManager'에 접근 할 수 있습니다. 예 : Login.ResourceManager.GetString ("foo") –

2

, 당신은

글로벌 :: System.Resources.ResourceManager 온도 = 새로운 글로벌 :: System.Resources.ResourceManager을 (사용해야 "RootNamespace.Login", global :: System.Reflection.Assembly.Load ("App_GlobalResources"));

이 문제를 파악하는 데 다소 시간이 걸렸습니다. 희망이 사람을 도울 것입니다. :)