Poiché quello che vuoi è interpolare, ciò che stai descrivendo non è una costante ma una funzione. In tal caso potresti utilizzare un delegato:
public delegate string PortalPathFormatFunction(string scheme, string delimiter,
string host);
La ragione per cui utilizzerei un delegato invece di solo Func<string, string, string, string>
è che identifica lo scopo di una funzione e la disambigura da altre funzioni con la stessa firma.
Potresti quindi implementarlo in questo modo (la denominazione è difficile)
public static class PathFormats
{
public static PortalPathFormatFunction GetPortalPath { get; }
= (scheme, delimiter, host) => $"{scheme}{delimiter}{host}/Account/Login";
}
o solo
public static string GetPortalPath(string scheme, string delimiter, string host) =>
$"{scheme}{delimiter}{host}/Account/Login";
Preferisco il primo perché specifica che la funzione deve corrispondere al delegato, come una classe che implementa un'interfaccia. Se qualcuno cambia la funzione in modo che non corrisponda più al delegato, voglio che l'errore del compilatore sia presente, dicendo loro di non farlo, invece che altrove.