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

728x90
반응형
728x170
using System;

/// <summary>
/// 부모 클래스
/// </summary>
public class ParentClass
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 부모 메시지 구하기 - GetParentMessage()

    /// <summary>
    /// 부모 메시지 구하기
    /// </summary>
    /// <returns>부모 메시지</returns>
    public string GetParentMessage()
    {
        return "Parent method executed.";
    }

    #endregion
}

/// <summary>
/// 자식 클래스
/// </summary>
public class ChildClass : ParentClass
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 자식 메시지 구하기 - GetChildMessage()

    /// <summary>
    /// 자식 메시지 구하기
    /// </summary>
    /// <returns>자식 메시지</returns>
    public string GetChildMessage()
    {
        return "Child method executed.";
    }

    #endregion
}

/// <summary>
/// 제네릭 클래스
/// </summary>
/// <typeparam name="T">타입</typeparam>
public class GenericClass<T> where T : ParentClass // ParentClass와 그 하위 클래스로 타입 T를 제한한다.
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// 객체
    /// </summary>
    private T instance;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - GenericClass(instance)

    /// <summary>
    /// 생성자
    /// </summary>
    /// <param name="instance">객체</param>
    public GenericClass(T instance)
    {
        this.instance = instance;
    }

    #endregion

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

    #region 메시지 쓰기 - WriteMessage()

    /// <summary>
    /// 메시지 쓰기
    /// </summary>
    public void WriteMessage()
    {
        string message = this.instance.GetParentMessage();

        Console.WriteLine(message);
    }

    #endregion
}

...


ParentClass parentClass = new ParentClass();

GenericClass<ParentClass> parentGenericClass = new GenericClass<ParentClass>(parentClass);

parentGenericClass.WriteMessage();


ChildClass childClass = new ChildClass();

GenericClass<ChildClass> childGenericClass = new GenericClass<ChildClass>(childClass);

childGenericClass.WriteMessage();
728x90
반응형
그리드형
Posted by 사용자 icodebroker
TAG , ,

댓글을 달아 주세요