반응형
이 포스팅은 .NET에서의 localization(지역화)에 대한 기본적인 이해를 전제로 쓰임
설명을 위해 아래와 같이 샘플 리소스를 만들었다.
기본적으로 리소스의 값에 접근할 땐 아래와 같이 이름으로 접근한다
var firstLocation = Localization.Location.LocationName_1;
당연하게도 firstLocation에는 "로케이션_1"이라는 값이 담긴다
이때 몇 번째 로케이션의 값이 필요할지 모르는 상황에서 locationCode라는 것이 주어진다고 가정해보자
locationCode가 1이면 "로케이션_1"이라는 값을, 2라면 "로케이션_2"라는 값을
즉, $"로케이션_{locationCode}"라는 값을 얻고 싶다
코드상으로 아래와 같은 그림이다
private string GetLocationNameUseLocationCode(int locationCode)
{
switch (locationCode)
{
case 1 :
return Localization.Location.LocationName_1;
case 2 :
return Localization.Location.LocationName_2;
case 3 :
return Localization.Location.LocationName_3;
case 4 :
return Localization.Location.LocationName_4;
defalut :
return null;
}
}
뭘 하고 싶은진 한눈에 보이지만
리소스가 수정될 때마다 코드가 같이 수정되어야 한다는 단점이 있고
휴먼에러가 발생할 확률도 높다
이런 케이스에 ResourceManager를 사용하면 아래와 같이 간결하게 처리가 가능하다
private string GetLocationNameUseLocationCode(int locationCode)
{
return Localization.Location.ResourceManager.GetString($"LocationName_{locationCode}");
}
반응형