첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170
using System;
using System.Reflection;
using System.Windows.Media;

/// <summary>
/// 색상명
/// </summary>
public class ColorName
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Static
    //////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// 색상명 배열
    /// </summary>
    private static ColorName[] _colorNameArray;

    #endregion

    ////////////////////////////////////////////////////////////////////////////////////////// Instance
    //////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// 원본명
    /// </summary>
    private string originalName;

    /// <summary>
    /// 명칭
    /// </summary>
    private string name;

    /// <summary>
    /// 색상
    /// </summary>
    private Color color;

    #endregion

    ////////////////////////////////////////////////////////////////////////////////////////// Property
    //////////////////////////////////////////////////////////////////////////////// Static
    ////////////////////////////////////////////////////////////////////// Public

    #region 전체 - All

    /// <summary>
    /// 전체
    /// </summary>
    public static ColorName[] All
    {
        get
        {
            return _colorNameArray;
        }
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////// Instance
    ////////////////////////////////////////////////////////////////////// Public

    #region 원본명 - OriginalName

    /// <summary>
    /// 원본명
    /// </summary>
    public string OriginalName
    {
        get
        {
            return this.originalName;
        }
    }

    #endregion

    #region 명칭 - Name

    /// <summary>
    /// 명칭
    /// </summary>
    public string Name
    {
        get
        {
            return this.name;
        }
    }

    #endregion

    #region 색상 - Color

    /// <summary>
    /// 색상
    /// </summary>
    public Color Color
    {
        get
        {
            return this.color;
        }
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Static

    #region 생성자 - ColorName()

    /// <summary>
    /// 생성자
    /// </summary>
    static ColorName()
    {
        PropertyInfo[] propertyInfoArray = typeof(Colors).GetProperties();

        _colorNameArray = new ColorName[propertyInfoArray.Length];

        for(int i = 0; i < propertyInfoArray.Length; i++)
        {
            _colorNameArray[i] = new ColorName(propertyInfoArray[i].Name, (Color)propertyInfoArray[i].GetValue(null, null));
        }
    }

    #endregion

    ////////////////////////////////////////////////////////////////////////////////////////// Instance
    //////////////////////////////////////////////////////////////////////////////// Private

    #region 생성자 - ColorName(originalName, color)

    /// <summary>
    /// 생성자
    /// </summary>
    /// <param name="originalName">원본명</param>
    /// <param name="color">색상</param>
    private ColorName(string originalName, Color color)
    {
        this.originalName = originalName;
        this.name         = GetName(this.originalName);
        this.color        = color;
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 문자열 구하기 - ToString()

    /// <summary>
    /// 문자열 구하기
    /// </summary>
    /// <returns>문자열</returns>
    public override string ToString()
    {
        return this.name;
    }

    #endregion

    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region 명칭 구하기 - GetName(originalName)

    /// <summary>
    /// 명칭 구하기
    /// </summary>
    /// <param name="originalName">원본명</param>
    /// <returns>명칭</returns>
    private string GetName(string originalName)
    {
        string name = originalName[0].ToString();

        for(int i = 1; i < originalName.Length; i++)
        {
            name += (char.IsUpper(originalName[i]) ? " " : "") + originalName[i].ToString();
        }

        return name;
    }

    #endregion
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker
TAG , , ,

댓글을 달아 주세요