반응형
Enum을 통한 일반적인 관리 방법
Enum을 통한 여러가지 관리 방법이 있습니다. 그 중에서 Description 어트리뷰트를 사용한 관리를 다루고자합니다.
public enum File
{
Install,
Image1,
Image2,
Image3,
EXE,
}
위와 같이 각 파일을 지칭하는 Enum이 있고, 우리는 해당 값을 이용하여 파일 주소를 가져오고자 할 경우, 대체적으로 함수를 통해 처리를 합니다.
private string GetFilePath(File file)
{
switch (file)
{
case File.Install:
return "Project/Release/Insall.exe";
case File.Image1:
return "Project/Resources/Images/1.jpg";
case File.Image2:
return "Project/Resources/Images/2.jpg";
case File.Image3:
return "Project/Resources/Images/3.jpg";
case File.EXE:
return "Project/Release/Client.exe";
default:
return string.Empty;
}
}
string path = GetFilePath(File.Image3);
Enum에 String 값 넣기
위의 코드는 문제가 없지만, 관리하는 방법에 있어서 더욱 효율적인 방법이 있습니다. Description 어트리뷰트를 통한 Enum관리입니다.
public enum File
{
[Description("Project/Release/Insall.exe")]
Install,
[Description("Project/Resources/Images/1.jpg")]
Image1,
[Description("Project/Resources/Images/2.jpg")]
Image2,
[Description("Project/Resources/Images/3.jpg")]
Image3,
[Description("Project/Release/Client.exe")]
EXE,
}
해당 Enum마다 문자열을 담을 수 있으며 다음 확장 함수를 추가하여 직관적이고 편리하게 사용할 수 있습니다.
using System;
using System.ComponentModel;
using System.Reflection;
public static class Utils
{
/// <summary>
/// Enum 확장메소드, Description 읽어오기
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static string ToDescription(this Enum source)
{
FieldInfo fi = source.GetType().GetField(source.ToString());
var att = (DescriptionAttribute)fi.GetCustomAttribute(typeof(DescriptionAttribute));
if (att != null)
{
return att.Description;
}
else
{
return source.ToString();
}
}
}
예제
아래와 같이 사용할 수 있습니다.
//string path = GetFilePath(File.Image3);
string path = File.Image3.ToDescription();
반응형
'Utils' 카테고리의 다른 글
C#, 커스텀 밴치마크 라이브러리 (함수 테스트 도구) (2) | 2022.01.16 |
---|---|
유니티, 코루틴 최적화(Coroutine Yield Instruction) (0) | 2021.12.23 |
C#, Enum.GetMoveNext() 확장함수로 다음 값으로 넘기기 (2) | 2021.12.21 |
C#, 확장함수를 이용하여 Collection<T> First, Last 가져오기 (0) | 2021.12.19 |
유니티, 런타임 중 특정 오브젝트 모두 찾기 (0) | 2021.12.19 |
댓글