C#的params
關鍵字允許數組和參數列表等價,不是嗎?代表似乎沒有註冊'參數'
不幸的是,在我的實施中,情況並非如此。
private Entities queryType(String entitiesType, params KeyValuePair<String, object>[] values)
{
addStandardHeaders();
String query = parsePredicate(values);
Task<HttpResponseMessage> filterTask = client.GetAsync(client.BaseAddress + RESTapi.ALMentitiesQuery(domain, project, entitiesType, query));
Task.WaitAny(filterTask);
//Callback:
HttpResponseMessage result = filterTask.Result;
if (result.IsSuccessStatusCode)
{
updateCookies(client.BaseAddress+RESTapi.ALMentitiesQuery(domain, project, entitiesType, query));
mainHeaders.Clear();
Task<Stream> output = result.Content.ReadAsStreamAsync();
Task.WaitAny(output);
//Callback:
return (Entities)fromJSON(output.Result, typeof(Entities));
}
else
{
util.Exception exception = getException(result);
throw new HttpException(exception.Title);
}
}
委託:
public delegate Entities SubTypeQuery(String subType, params KeyValuePair<String, object>[] values);
在應用:
public List<Run> getRuns()
{
List<Entity> selection = ((Entities)subTypeSelector.DynamicInvoke(
ALMObject.Run.entitiesName(),
(new KeyValuePair<String, object>("testcycle-id", id))
)).entities.ToList<Entity>();
List<Run> runSet = new List<Run>();
foreach (Entity element in selection)
runSet.Add(new Run(element, subTypeSelector));
return runSet;
}
在運行時,我得到一個類型的異常: 「無法轉換KeyValuePair<String, object>
到KeyValuePair<String, object>[]
」。這使得params
完全無用。 建議?
請把它降低到[mcve]。你提供的大多數代碼都是不相關的,你沒有告訴我們問題出在哪裏。使用'KeyValuePair'而不是更簡單的類型也使得它比它需要更復雜。 (我也強烈建議你開始遵循.NET的命名約定。) –