Automation Anywhere Metabots调用C#类库:List<string>参数传参求助
解决Automation Anywhere Metabot向C# DLL传递List的问题
我之前在项目里也碰到过一模一样的情况——AA Metabot的数组变量和C#的List<string>直接对接总是没反应,后来摸清楚是类型映射的问题,下面是亲测可行的几种方案:
方案一:给DLL新增适配方法(最推荐)
AA Metabot的字符串数组和C#的string[]是直接兼容的,但和List<string>没法自动转换。所以最简单的办法是在你的C# DLL里新增一个重载方法,用string[]作为参数,内部再转成List<string>调用原逻辑:
// 你原来的业务方法 public void YourOriginalLogic(List<string> inputList) { // 这里写你的原有处理逻辑 Console.WriteLine($"接收到 {inputList.Count} 个元素"); } // 新增的适配方法,专门给Metabot调用 public void YourLogicForMetabot(string[] inputArray) { // 把AA传过来的字符串数组转成List<string> List<string> convertedList = new List<string>(inputArray); // 调用原方法 YourOriginalLogic(convertedList); }
之后在Metabot里配置参数时:
- 选择Array类型的变量,变量子类型设为
String - 调用DLL时,把这个数组变量绑定到
YourLogicForMetabot的string[]参数上
方案二:不改DLL的情况下转JSON传递(应急方案)
如果因为权限或者其他原因不能修改DLL,可以在Metabot里把数组序列化成JSON字符串,再传给DLL的某个字符串参数,在DLL内部反序列化成List<string>:
- 在Metabot里,用“Loop”组件遍历数组,把每个元素拼接成JSON数组格式的字符串(比如
["元素1","元素2"]) - 在DLL里新增一个接收字符串参数的方法,用JSON库反序列化:
using Newtonsoft.Json; // 需要引用Newtonsoft.Json NuGet包 public void YourLogicWithJson(string jsonInput) { List<string> inputList = JsonConvert.DeserializeObject<List<string>>(jsonInput); YourOriginalLogic(inputList); }
这种方法要注意处理JSON格式错误的情况,不如方案一稳定。
排查小技巧
如果还是没输出,先排查这几点:
- 在DLL里加日志(比如写入本地文本文件),确认是否接收到了Metabot传递的参数
- 检查Metabot的数组变量是否正确赋值,有没有空元素或者未初始化的情况
- 确认DLL的方法是public的,并且Metabot里选择了正确的方法名和参数
内容的提问来源于stack exchange,提问作者siddhant749
相关产品推荐
相关产品推荐

