C# motsvarighet till TypeScript Template Literal Types?
Så jag har en C#-funktion som accepterar en SQL-sorteringsordningsparameter:
public static string BuildSortClause(string colId, string sortOrder) {
...
}
Jag vill bara acceptera 'ASC' eller 'DESC' som giltiga sortOrder-strängar under kompilering. Alla andra strängar som skickas in ska misslyckas. I Typescript skulle detta vara enkelt, jag skulle bara använda en Template Literal Type för den parametern:
type SortOrder = 'ASC' | 'DESC';
Vad är den närmaste lösningen på den här typen av strängbegränsning i C#?
Svar #1
Detta kan göras med en enum och standardmetoden ToString.
public enum SortOrder { Asc, Desc }
public static string BuildSortClause(string colId, SortOrder sortOrder) {
// string sort = sortOrder.ToString(); //either "Asc" or "Desc"
...
}
public static void Do() {
BuildSortClause("someId", SortOrder.Asc);
}
