유용한 정보

[C#] 문자열을 속성으로 갖는 클래스 만들기

DevReff 2025. 4. 16. 05:34
728x90
728x90
SMALL

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())); }
}

728x90
728x90
LIST