例如,我有一个这样的代码片段:
{id}
我希望在将CSharpScript
传递给Global
之前将ChangeState
插入到实际值中,我不想定义一个let rec restrict (column, value, aTable) = match aTable with
name,[]->[]
|name,(col,vals)::rest->if col=column
then (col,auxListMaker(vals,trueFalseList))::restrict (column,value.(name,rest))
else restrict (column,value.(name,rest))
let rec auxTrueFalser (column, value, aTable) = match aTable with
name,[]->[]
|name,(col,vals)::rest-> if column=col
then (if List.hd vals = value
then true::aux1(column,value,(name,[(col,List.tl vals)]))
else false::aux1(column,value,(name,[(col,List.tl vals)])))
else aux1(column,value,(name,rest))
in
let trueFalseList = auxTrueFalser (column, value, aTable) in
let rec auxListMaker (vals, trueFalseList) = match vals with
[]->[]
|h::t -> if List.hd trueFalseList
then h::auxListMaker(t,List.tl trueFalseList)
else auxListMaker(t,List.tl trueFalseList)
in
类来封装所有参数,如示例代码显示,我能这样做吗?我必须将代码段包装在C#函数中吗?
我的第二个问题是,add_action('template_redirect','custom_shop_page_redirect');
function custom_shop_page_redirect(){
if (class_exists('WooCommerce')){
if(is_product()){
wp_redirect( 'https://google.com' );
exit();
}
}
return;
}
函数驻留在另一个程序集中,如何告诉C#脚本API加载该程序集?
编辑:这背后的故事有点奇怪的问题是,我正在开发像应用程序这样的工作流程,我想创建一个活动类可以从配置文件中获取一段C#代码并运行它,但代码通常需要输入参数哪些值仅从父活动确定,现在所有输入参数都是字符串。
答案 0 :(得分:1)
我认为你需要的是一个在这种情况下接受参数的Lambda。
您想要了解两种主要类型;行动和功能。 操作类型不返回任何变量,Func类型具有返回类型。您可以对它们进行模板化,使事情变得更加灵活。
您可以在运行时创建它们,并根据需要进行编辑。因此,如果您处于一个大循环中并且您需要调整某些功能,则可以通过简单的变量赋值来改变输入和输出。
Action<string> idCheckAction = (string _id) =>
{
Console.WriteLine("ID = " + _id);
};
Func<string, string> idCheckFunc = (string _id) =>
{
return "ID = " + _id;
};
idCheckAction("123"); // "ID = 123"
string concat = idCheckFunc("123");
Console.WriteLine(concat); // "ID = 123"
这样的东西可用于控制台日志记录,因为你可以存储一个字符串值列表+ Action / Func值,然后通过关键字或迭代器调用这些函数。
关于程序集加载的主题,我相信一个简单的using (X)
就足够了。您可以进入visual studio,查看解决方案资源管理器中的右侧并查看参考资料,以查看您拥有的资源。你可以直接从文件中添加它们而不用担心。您需要研究如何加载程序集,但我认为它可以与Reflection一起使用,但请不要引用我。