문자열 보간을 상수로 string.Format 처럼 이용하는 방법이 있나요?

예를 들면

기존에는 이렇게 사용했습니다.

public const string NullMessage = "This object is null. Target:{0}";

var some = new object();
var message = string.Format(NullMessage, some);

NullMessage 를 별도의 상수 클래스로 뽑아서 관리하면
message 를 쓰는 위치에서는 문자 리터럴을 직접 쓸 일이 없어서 관리가 편했는데요…

저 NullMessage 처럼 껍딱 문자열을 상수로 보관해 놓고
사용하는 시점에서 문자열 보간을 이용해 처리하는 방법이 있을까요?

이런 식으루 말이죠.

public const string NullMessage = "This object is null. Target:{target}";

var target = new object();
var message = $NullMessage{target}; // 이런식으로 쓰고 싶지만... 안 됨.. ;ㅂ;

안 되겠죠…?ㅁ?

사실 이거 기존 로그나 메시지 처리할 때

throw new Exception($"There is no matched value. target :{source}");

이런식으로 ‘문자 리터럴 + 할당값’ 으로 새로운 문자열을 만드는 걸 소스 코드 중간에 잔뜩 만들어서 썼는데

이 로그 문자열을 반복적으로 사용하게 되니까
"There is no matched value. target :문자 리터럴을 소스코드에서 반복적으로 쓸 수밖에 없더군요.

그래서 기존 formatter 방식으로 돌아가야하나… 고민 중입니다.

이거 제가 기본기가 약해서 모르는 건지, 그냥 안 되는 건지 모르겠어요…
(찾아봐도 상수를 핸들링하는 건 나오는데 제가 원하는 건 안 나오더라구요… -ㅂ-;; )

혹시 방법을 아시나욜 ?ㅁ?

저도 비슷한 고민을 했어서 잠시 관련 정보를 조사한 적이 있었는데요, 문자열 보간은 컴파일 시점에서 코드로 변환되기 때문에 안되는 것으로 알고 있습니다.

네. 맞습니다. 다만, C# 10에서는 선택지가 조금 더 넓어져서, 컴파일 타임에서 상수로 확정이 가능하다면 상수를 문자열 보간의 인자로 활용할 수 있게 조금 더 유연해지긴 했습니다.