C#을 배우는 과정에서 가장 곤란했던 건 과제나 실습을 할 때 코드 간 종속성이었다.
화면에 캐릭터의 정보를 표시한다고 해보자.
해당 정보를 받기 위해서 Character 클래스를 정보 표시 기능을 하는 클래스에 어떻게 전달해줄 것인가?
가장 간단하게는 이렇게 할 수 있겠다.
public static class ConsoleManager
{
public static Character? CurrentCharacter { get; set; }
}
하지만 이게 난감한건 여러 가지가 있다.
- CurrentCharacter를 어디서 설정해줄 것인가?
- Character말고 다른 정보를 표시할 때에 이 클래스를 재사용할 수 있는가?
즉, 내 고민은 이것이다.
“Character Class의 참조 없이 Character의 클래스의 정보를 출력할 수 있을까요?”
이에 대해 찾다가 아주 좋은 글을 발견했다.
클래스 간 통신을 클래스의 참조가 아닌 Action
을 통한 callback으로 하자!라는 것이다.
즉, 내 코드에선 이렇게 사용할 수 있겠다.
public static class ConsoleManager
{
public static Action<string> callback;
public static SetCallback(Action<string> callback) {
this.callback = callback;
}
public static FireCallback(string info) {
callback.Invoke(info);
}
}
아직 대리자와 콜백 함수를 다루는데 익숙하지 않아 생각하기가 힘든 것 같다.
더 이해하게 된다면 추가로 내용을 작성하도록 하겠다.
Uploaded by N2T
'개발 > Unity 내일배움캠프 TIL' 카테고리의 다른 글
C# 중첩 클래스와 partial 클래스 (0) | 2023.08.31 |
---|---|
C# Enumerable 인터페이스 (0) | 2023.08.30 |
C# StringBuilder 정리 (0) | 2023.08.28 |
C# LINQ 간단 정리 (0) | 2023.08.25 |
C# 값 vs 참조 형식 (Value vs Reference) (0) | 2023.08.24 |