1. 소스
using System.Reflection;
/// <summary>
/// 문자열을 속성으로 갖는 클래스
/// </summary>
public class StringValue : System.Attribute
{
private string _value; /// 문자열 속성값
/// <summary>
/// 속성값을 설정한다.
/// </summary>
/// <param name="value">속성값</param>
public StringValue(string value)
{
_value = value;
}
/// <summary>
/// 속성값을 가져온다.
/// </summary>
public string Value
{
get { return _value; }
}
}
/// <summary>
/// 자료형 enum에 문자열을 사용할 수 있게 하는 클래스
/// </summary>
public static class StringEnum
{
/// <summary>
/// enum에 String 사용시 enum 상수의 문자열값을 구한다.
/// </summary>
/// <typeparam name="T">임의의 enum형</typeparam>
/// <param name="value">임의의 enum형 변수</param>
/// <returns>enum 상수의 문자열값</returns>
public static string GetStringValue<T>(T value)
{
string output = "";
try
{
Type type = value.GetType();
FieldInfo fi = type.GetField(value.ToString());
StringValue[] attrs = fi.GetCustomAttributes(typeof(StringValue), false) as StringValue[];
if (attrs.Length > 0)
{
output = attrs[0].Value;
}
}
catch (Exception ex)
{
KLog.Write(ex.ToString());
}
return output;
}
}
}
2. 사용예제
/// <summary>
/// 명령어 ID
/// </summary>
[Flags]
public enum CmdID : int
{
[StringValue("알수없음")]
Unknown = -1,
[StringValue("Ex")]//확대보기
Expand
}
public class Cmd
{
/// <summary>
/// 확대보기
/// </summary>
public string Expand
{
get { return StringEnum.GetStringValue(Enum.Parse(typeof(CmdID), CmdID.Expand.ToString())); }
}
}
/// <summary>
/// 확대보기
/// </summary>
string Expand
{
get { return StringEnum.GetStringValue(Enum.Parse(typeof(CmdID), CmdID.Expand.ToString())); }
}
'유용한 정보' 카테고리의 다른 글
[C#] 데이터셋 연동하기 (0) | 2025.04.16 |
---|---|
[C#] DataGridView 컨트롤에서 열 고정하기 (0) | 2025.04.16 |
[C#] INI Parser (0) | 2025.04.16 |
[C#] 컨트롤에 들어갈 문자열의 폭과 높이 구하기 (0) | 2025.04.16 |
[C#] 컨트롤에 들어갈 문자열에서 가장 큰 폭과 높이 구하기 (0) | 2025.04.16 |