Если вы намерены наследовать от строкового класса просто создать псевдоним для строкового класса , поэтому ваш код более самоописан, тогда вы не можете наследовать от строки.Вместо этого используйте что-то вроде этого:
using DictKey = System.String;
using DictValue= System.String;
using MetaData = System.String;
using SecurityString = System.String;
Это означает, что ваш код теперь более самоописан, а намерение более ясное, например:
Tuple<DictKey, DictValue, MetaData, SecurityString> moreDescriptive;
На мой взгляд, этот кодпоказывает большее намерение по сравнению с тем же кодом, без псевдонимов:
Tuple<string, string, string, string> lessDescriptive;
Этот метод алиасинга для большего самоописания кода также применим к словарям, хэш-наборам и т. д.
Конечно, если вы хотите добавить функциональность к классу строк, то лучше всего использовать методы расширения.