You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tsheets API更新工时表自定义字段C#问题:空引用绑定错误

解决C#中更新Tsheets API自定义字段时的空引用错误

嗨,我一眼就看出问题所在啦!你遇到的Cannot perform runtime binding on a null reference错误,是因为你直接给timesheet.customfields["247513"]赋值时,customfields这个嵌套的JObject还没有被初始化,它当前是null,自然没法进行索引绑定操作。

咱们先对照下Postman里的正确结构:

"customfields": { "247513": "DX Piping" }

这里的customfields本身是一个独立的对象,所以在C#里你得先把这个对象创建出来,再往里面添加键值对。

修正后的代码示例

你只需要先初始化customfields为新的JObject,再给指定字段赋值即可:

string costCode= "DX Piping";
dynamic timesheet = new JObject();
timesheet.id = tsID;
timesheet.start = isoDate;
// 先初始化customfields为新的JObject
timesheet.customfields = new JObject();
// 再给目标自定义字段赋值
timesheet.customfields["247513"] = costCode;
timesheet.end = isoDate;

或者你也可以用更紧凑的方式直接构建嵌套结构:

string costCode= "DX Piping";
dynamic timesheet = new JObject(
    new JProperty("id", tsID),
    new JProperty("start", isoDate),
    new JProperty("customfields", new JObject(
        new JProperty("247513", costCode)
    )),
    new JProperty("end", isoDate)
);

这样就能和Postman里的数据结构完全匹配,不会再出现空引用的问题。本质原因是动态JObject不会自动帮你创建嵌套的子对象,必须显式初始化后才能使用。

内容的提问来源于stack exchange,提问作者Doug Farrell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:17:53