使用Axis Communications VAPIX我正在设置一个NewActionConfiguration,它接受一些我已经保存在列表中的参数,但是按照API文档的实现方式,我不能在定义newAction对象时遍历我的参数列表XML对象。
//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)或类似的操作。有人有什么想法吗?
发布于 2019-09-07 06:57:55
找到了!感谢你的帮助@Vitor,你已经很接近了,但是在我找到这个之后,我学会了如何将我的列表转换为我的对象:Convert List to object[]
以下是最终奏效的方法:
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()
}
};发布于 2019-09-07 03:05:35
所以首先,你不能在实例化作用域块的对象中声明foreach块。您需要做的是在function作用域之前声明一个变量,然后将Parameter属性赋予它。如下所示:
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
};https://stackoverflow.com/questions/57827153
复制相似问题