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

访问ExpandoObject的in属性触发CS1001错误,求解决方案

解决ExpandoObject中访问名为in的属性时的关键字冲突问题

没错,问题根源就是in是C#的保留关键字,编译器会把point.in里的in当成关键字解析,而非属性名,因此触发语法错误。下面是两种不用修改属性名就能解决的办法:

方法一:使用索引器访问

ExpandoObject实现了IDictionary<string, object>接口,我们可以把动态对象强转为这个接口,通过键名来访问属性:

foreach (dynamic? point in points)
{
    var pointDict = point as IDictionary<string, object>;
    PointModel model = new PointModel
    {
        InPoint = pointDict["in"],
        Duration = point.duration,
        PointType = point.type
    };

    // other code here.
}

方法二:使用逐字标识符

在关键字前加上@符号,强制编译器将其视为普通标识符,这种方式代码改动最小:

foreach (dynamic? point in points)
{
    PointModel model = new PointModel
    {
        InPoint = point.@in,
        Duration = point.duration,
        PointType = point.type
    };

    // other code here.
}

如果只是单个属性的访问,方法二更简洁直观;如果需要批量处理属性或者不确定属性名,方法一的灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:49:52