防止此 foreach 循环提前停止
Preventing this foreach loop from stopping early
上周我发布了 question, which was given the answer that the AtTask API does have a set limit, and to change this, "$$LIMIT" needs to be used, as explained by the AtTask site。
这非常有用,只是我不确定将“$$LIMIT”放在哪里,因为我使用的是 C#,而 AtTask C# 示例不包括它。我一直在 AtTask 开发者网站上搜索解决方案,但一直空手而归。
如何在 C# 中使用此代码来提高调用限制?
编辑
我上一个问题中包含的代码示例:
JToken projects = client.Search(ObjCode.PROJECT, new {groupID = userGroupID});
foreach (var j in projects["data"].Children())
{
Console.WriteLine("# " + counter + " Name: {0}", j.Value<string>("name"));
counter++;
}
看起来他们的 API 将传递给 Search() 的第二个参数的对象转换为查询字符串参数。所以在你的例子中
client.Search(ObjCode.PROJECT, new {groupID = userGroupID});
以下 url 已创建(123 代表您的组 ID 是什么)。
GET /attask/api/project/search?groupID=123
所以要将 $$LIMIT 添加到 url 添加 $$LIMIT 到对象。不幸的是,C# 不允许在名称中使用 $。所以我的建议是稍微修改一下他们的C#API。首先将对 Search() 的调用更改为此
client.Search(ObjCode.PROJECT, new {groupID = userGroupID, __Limit = 200 });
然后,在AtTaskRestClient.cs中,将文件末尾的parameterObjectToStringArray()更改为以下内容。
private string[] parameterObjectToStringArray(object parameters, params string[] toAdd) {
var properties = parameters.GetType().GetProperties();
List<string> p = new List<string>(properties.Length);
p.AddRange(toAdd);
foreach(var prop in properties) {
string propName = prop.Name;
if (propName.StartsWith("__"))
{
propName = "$$" + propName.Substring(2);
}
string line = string.Format("{0}={1}", propName, prop.GetValue(parameters, null));
p.Add(line);
}
return p.ToArray();
}
此更改还允许您使用以 $$ 开头的其他参数,例如 $$FIRST。
上周我发布了
这非常有用,只是我不确定将“$$LIMIT”放在哪里,因为我使用的是 C#,而 AtTask C# 示例不包括它。我一直在 AtTask 开发者网站上搜索解决方案,但一直空手而归。
如何在 C# 中使用此代码来提高调用限制?
编辑
我上一个问题中包含的代码示例:
JToken projects = client.Search(ObjCode.PROJECT, new {groupID = userGroupID});
foreach (var j in projects["data"].Children())
{
Console.WriteLine("# " + counter + " Name: {0}", j.Value<string>("name"));
counter++;
}
看起来他们的 API 将传递给 Search() 的第二个参数的对象转换为查询字符串参数。所以在你的例子中
client.Search(ObjCode.PROJECT, new {groupID = userGroupID});
以下 url 已创建(123 代表您的组 ID 是什么)。
GET /attask/api/project/search?groupID=123
所以要将 $$LIMIT 添加到 url 添加 $$LIMIT 到对象。不幸的是,C# 不允许在名称中使用 $。所以我的建议是稍微修改一下他们的C#API。首先将对 Search() 的调用更改为此
client.Search(ObjCode.PROJECT, new {groupID = userGroupID, __Limit = 200 });
然后,在AtTaskRestClient.cs中,将文件末尾的parameterObjectToStringArray()更改为以下内容。
private string[] parameterObjectToStringArray(object parameters, params string[] toAdd) {
var properties = parameters.GetType().GetProperties();
List<string> p = new List<string>(properties.Length);
p.AddRange(toAdd);
foreach(var prop in properties) {
string propName = prop.Name;
if (propName.StartsWith("__"))
{
propName = "$$" + propName.Substring(2);
}
string line = string.Format("{0}={1}", propName, prop.GetValue(parameters, null));
p.Add(line);
}
return p.ToArray();
}
此更改还允许您使用以 $$ 开头的其他参数,例如 $$FIRST。