첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ Colors 클래스 : 리플렉션을 사용해 ColorName 클래스 만들기

------------------------------------------------------------------------------------------------------------------------

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

}

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요