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

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

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

using System;

using System.Reflection;

using System.Windows.Media;

 

/// <summary>

/// 브러시명

/// </summary>

public class BrushName

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field

    ////////////////////////////////////////////////////////////////////////////////////////// Static

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

 

    #region Field

 

    /// <summary>

    /// 브러시명 배열

    /// </summary>

    private static BrushName[] _brushNameArray;

 

    #endregion

 

    ////////////////////////////////////////////////////////////////////////////////////////// Instance

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

 

    #region Field

 

    /// <summary>

    /// 원본명

    /// </summary>

    private string originalName;

 

    /// <summary>

    /// 명칭

    /// </summary>

    private string name;

 

    /// <summary>

    /// 브러시

    /// </summary>

    private Brush brush;

 

    #endregion

 

    ////////////////////////////////////////////////////////////////////////////////////////// Property

    //////////////////////////////////////////////////////////////////////////////// Static

    ////////////////////////////////////////////////////////////////////// Public

 

    #region 전체 - All

 

    /// <summary>

    /// 전체

    /// </summary>

    public static BrushName[] All

    {

        get

        {

            return _brushNameArray;

        }

    }

 

    #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 브러시 - Brush

 

    /// <summary>

    /// 브러시

    /// </summary>

    public Brush Brush

    {

        get

        {

            return this.brush;

        }

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Static

 

    #region 생성자 - BrushName()

 

    /// <summary>

    /// 생성자

    /// </summary>

    static BrushName()

    {

        PropertyInfo[] propertyInfoArray = typeof(Brushes).GetProperties();

 

        _brushNameArray = new BrushName[propertyInfoArray.Length];

 

        for(int i = 0; i < propertyInfoArray.Length; i++)

        {

            _brushNameArray[i] = new BrushName

            (

                propertyInfoArray[i].Name,

                (Brush)propertyInfoArray[i].GetValue(null, null)

            );

        }

    }

 

    #endregion

 

    ////////////////////////////////////////////////////////////////////////////////////////// Instance

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

 

    #region 생성자 - BrushName(originalName, brush)

 

    /// <summary>

    /// 생성자

    /// </summary>

    /// <param name="originalName">원본명</param>

    /// <param name="brush">브러시</param>

    private BrushName(string originalName, Brush brush)

    {

        this.originalName = originalName;

        this.name         = GetName(this.originalName);

        this.brush        = brush;

    }

 

    #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

댓글을 달아 주세요