首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要向NewActionConfiguration添加参数,但不能在定义内使用foreach

需要向NewActionConfiguration添加参数,但不能在定义内使用foreach
EN

Stack Overflow用户
提问于 2019-09-07 02:43:30
回答 2查看 47关注 0票数 0

使用Axis Communications VAPIX我正在设置一个NewActionConfiguration,它接受一些我已经保存在列表中的参数,但是按照API文档的实现方式,我不能在定义newAction对象时遍历我的参数列表XML对象。

代码语言:javascript
复制
//This is how the API docs say to do it:
NewActionConfiguration newAction = new NewActionConfiguration
{
    TemplateToken = overlayToken,
    Name = "Overlay Text",
    Parameters = new ActionParameters
    {
        Parameter = new[]
        {
            new ActionParameter { Name = "text", Value = "Trigger:Active" },
            new ActionParameter { Name = "channels", Value = "1" },
            new ActionParameter { Name = "duration", Value = "15" }
         }
     }
};

//This is what I need to do:
 NewActionConfiguration newAction = new NewActionConfiguration
 {
     Name = xmlPrimaryAction["Name"].InnerText,
     TemplateToken = xmlPrimaryAction["ActionTemplate"].InnerText,
     Parameters = new[]
     {
         foreach (ActionParameter actionParameter in actionParameterList)
         {
             new ActionParameter { Name = actionParameter.Name, Value = actionParameter.Value };
          }
      }
};

应用程序接口不允许我只执行:newAction.Parameters.Parameter.Add(actionParameter)或类似的操作。有人有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-07 06:57:55

找到了!感谢你的帮助@Vitor,你已经很接近了,但是在我找到这个之后,我学会了如何将我的列表转换为我的对象:Convert List to object[]

以下是最终奏效的方法:

代码语言:javascript
复制
var actionParameterList = new List<ActionParameter>();
foreach (XmlNode xmlParameter in xmlActionParameters)
{
    ActionParameter actionParameter = new ActionParameter();
    actionParameter.Name = xmlParameter["Name"].InnerText;
    actionParameter.Value = xmlParameter["Value"].InnerText;
    actionParameterList.Add(new ActionParameter { Name = actionParameter.Name, Value = actionParameter.Value });
}
 NewActionConfiguration newAction = new NewActionConfiguration
 {
     Name = xmlPrimaryAction["Name"].InnerText,
     TemplateToken = xmlPrimaryAction["ActionTemplate"].InnerText,
     Parameters = new ActionParameters
     {
         Parameter = actionParameterList.Cast<ActionParameter>().ToArray()
     }
 };
票数 0
EN

Stack Overflow用户

发布于 2019-09-07 03:05:35

所以首先,你不能在实例化作用域块的对象中声明foreach块。您需要做的是在function作用域之前声明一个变量,然后将Parameter属性赋予它。如下所示:

代码语言:javascript
复制
var actionParameters = new List<ActionParameter>();
foreach (ActionParameter actionParameter in actionParameterList)
     {
         actionParameters.Add(new ActionParameter { Name = actionParameter.Name, Value = actionParameter.Value });
      }
NewActionConfiguration newAction = new NewActionConfiguration
 {
     Name = xmlPrimaryAction["Name"].InnerText,
     TemplateToken = xmlPrimaryAction["ActionTemplate"].InnerText,
     Parameters = actionParameters.ToArray()//Use System.Linq here to convert the list into an array
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57827153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档