Я думаю, что самый простой способ изменить этот фрагмент кода, чтобы сделать то, что вы хотите, состоит в том, чтобы модифицировать токены, чтобы они содержали функции вместо ... объектов или того, чем в данный момент является TokenReplacement.
class Token {
Func<BasicUser, object> TokenReplacement;
// ...
}
// ...
new Token
{
TokenName = "Lan ID",
TokenIdentifier = "<!--LANID-->",
TokenReplacement = user => user.LanID,
},
new Token
{
TokenName = "First Name",
TokenIdentifier = "<!--FirstName-->",
TokenReplacement = user => user.FirstName,
},
// ...
OutputString = OutputString.Replace(token.TokenName,
token.TokenReplacement(User).ToString());
Другой подход заключается в том, чтобы полностью потерять список _tokens и вместо этого создать словарь значений, а затем заменить все, что похоже на тег, значениями из словаря. Вещи, похожие на теги, можно легко найти с помощью регулярного выражения.