gpt4 book ai didi

c# - 使用反射替换 token

转载 作者:行者123 更新时间:2023-11-30 15:40:29 25 4
gpt4 key购买 nike

我的应用程序在很大程度上基于自定义类,但在尝试根据给定替换 token 的类型进行自定义替换时遇到了困难。

我想做的(看下面的代码)是给定一个特定的字符串,循环遍历 _tokens 对象。对于找到的每个标记,确定 TokenReplacement 中提供的对象类型,并将其替换为由 User 对象提供的同一对象的值。

任何帮助或其他方法将不胜感激。

编辑:忘记提及这会给我一个堆栈溢出错误。

private BasicUser BU = new BasicUser();
private readonly List<Token> _tokens = new List<Token>
{
new Token
{
TokenName = "Lan ID",
TokenIdentifier = "<!--LANID-->",
TokenReplacement = this.BU.LanID
},
new Token
{
TokenName = "First Name",
TokenIdentifier = "<!--FirstName-->",
TokenReplacement = new BasicUser().FirstName
},
new Token
{
TokenName = "Last Name",
TokenIdentifier = "<!--LastName-->",
TokenReplacement = new BasicUser().LastName
}
};

public string ReplaceTokens(string Input, string LanID)
{
string OutputString = "";
BasicUser User = GetParticipantInformation(Input);
foreach (var token in _tokens)
{
token.TokenReplacement.GetType();
OutputString = OutputString.Replace(token.TokenName, "Token replacement");
}
return OutputString;
}

最佳答案

是的,你可以使用反射。只需为 TokenReplacement 使用 PropertyInfo 类型并为其分配您需要的属性,如下所示:

class Token {
string TokenName;
string TokenIdentifier;
PropertyInfo TokenReplacement;
}

private readonly List<Token> _tokens = new List<Token>
{
new Token
{
TokenName = "Lan ID",
TokenIdentifier = "<!--LANID-->",
TokenReplacement = typeof(BasicUser).GetProperty("LanID")
},
new Token
{
TokenName = "First Name",
TokenIdentifier = "<!--FirstName-->",
TokenReplacement = typeof(BasicUser).GetProperty("FirstName")
}
};

public string ReplaceTokens(string Input, string LanID)
{
string OutputString = "";
BasicUser User = GetParticipantInformation(Input);
foreach (var token in _tokens)
{
OutputString = OutputString.Replace(token.TokenName, token.TokenReplacement.GetValue(User, null).ToString());
}
return OutputString;
}

如果您不需要基于反射,您也可以采用 Matti Virkkunen 的方式,它允许在对象上指定一些比简单属性读取更复杂的查询。

关于c# - 使用反射替换 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com