【发布时间】:2018-10-04 20:41:02
【问题描述】:
我是 C# 新手,在 CMS 上写过一些东西,但我的背景主要是 JavaScript 相关的。也就是说,我在 OpenText Capture Center 的“脚本”客户端工作。执行下面的代码时出现错误“当前上下文中不存在名称'srfOnly'”
如果我将变量声明移动到函数内,我会得到相同的错误,如果我将它们移动到全局,我会得到相同的错误,但在不同的行号上。
如何在整个代码中访问变量 srfOnly 和 otherDocs?
//Parameters:
//DataPool data
//ITrace trace
// Checking if condition is fulfilled.
if (checkDocuments(data))
{
// Getting batch field named 'cc_SkipValidation'.
// Setting new value.
DOKuStar.Data.Xml.Bool skipValidationField = data.RootNode.Fields["cc_SkipValidation"] as DOKuStar.Data.Xml.Bool;
bool srfOnly = false;
bool otherDocs = false;
if(otherDocs == true)
{
skipValidationField.SetValue(false);
}
if(srfOnly == true && otherDocs == false)
{
skipValidationField.SetValue(true);
skipValidationField.State = DataState.Ok;
}
}
// !!! Closing bracket is neccessary !!!
}
// ------------------ Functions
public bool checkDocuments(DataPool dataPool)
{
foreach (Document doc in dataPool.RootNode.Documents)
{
if (doc.Name == "ServiceRequestForm")
{
srfOnly = true;
}
else if (doc.Name != "ServiceRequestForm")
{
otherDocs = true;
}
}
trace.WriteInfo("Trace info for Validation of srfOnly = " + srfOnly);
trace.WriteInfo("Trace info for Validation of otherDocs = " + otherDocs);
// !!! No closing bracket needed !!!
【问题讨论】:
-
您的格式已关闭,一些括号按顺序出现在同一列上。您可能想要编辑...
-
No closing bracket needed这很有趣。 -
同意没有右括号很有趣。这是从我为达到这一点而修改的软件提供的示例中获取的,并且在添加/移动括号时出错。
-
@Chris:C# 有一个鲜为人知的特性,它可以在“脚本”模式下使用,您可以在其中以“REPL”风格构建小示例程序;本质上,正如您所推测的,您输入的代码被添加为类的成员。大概这就是 OP 在这里所做的,尽管我不熟悉“OpenText Capture Center”。 (不过,我确实考虑在大学毕业后为 OpenText 工作;我相信那会很好,但我认为去微软是更好的选择。:-))
-
@Chris:一个我不知道答案的有趣问题是,OpenText 是否使用 C# 脚本 API 来构建有原则的、受支持的脚本解决方案,或者他们是否只是将代码 sn-ps 粘贴到ad-hoc方式在后台运行编译器; cmets 的存在表明这里和那里需要放置奇怪的右括号,这让我认为后者可能是这种情况。在不了解 OpenText 如何托管 C# 的情况下,我不确定原始发帖人的问题是否可以回答。