최대 1 분 소요

😢상황

  • 클래스 내부 데이터를 외부에서 접근할 때, 단순한 값 반환이 아닌 추가 동작(예: 로그 출력, 검증 등) 을 수행하고 싶음
  • 자동 구현 프로퍼티로는 이러한 요구를 만족할 수 없음

예:

public string Name { get; set; } // 이 구조로는 로그 출력 불가

🛠️해결법

getset을 명시적으로 구현하여 커스텀 로직을 삽입:

private TextRange _text;

public TextRange text
{
    get
    {
        // 커스텀 로직 예시
        Console.WriteLine("text 프로퍼티가 호출되었습니다.");
        return _text;
    }
    private set
    {
        _text = value;
    }
}

정리: 왜 이게 효과 있었는가?

  • 프로퍼티 접근 시 원하는 행동(로깅, 검증, 알림 등) 을 삽입할 수 있음
  • 캡슐화를 유지하면서도 내부 로직을 유연하게 제어 가능
  • setprivate으로 제한함으로써 외부 수정 방지 기능도 함께 구현

👉 이 방식은 디버깅, 추적, 의도된 사용 패턴 강제 등에 매우 유용함