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);
}

Relaterade artiklar