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

使用C# Graph Client获取MS Graph API中deviceConfigurations的groupId失败

问题分析与解决方法

问题原因

Microsoft Graph Client SDK 里,DeviceConfigurationAssignment 的 Target 属性是抽象基类 DeviceConfigurationAssignmentTarget,但API返回的实际类型是 GroupAssignmentTarget(从响应里的 @odata.type 能确认)。直接通过基类访问 groupId 会因为基类没有该属性而报错,而 Id 是基类 Entity 的属性,所以能正常获取。

解决方案

把 Target 属性强制转换为具体的子类 GroupAssignmentTarget,再访问 GroupId 属性,同时建议加类型检查避免转换失败:

if (configAssignments.Value != null)
{
    foreach (var item in configAssignments.Value)
    {
        Assignment assignment = new Assignment();
        assignment.Id = item.Id;
        
        // 先判断类型再转换,安全访问GroupId
        if (item.Target is GroupAssignmentTarget groupTarget)
        {
            assignment.GroupID = groupTarget.GroupId;
        }
        
        Config.Assignments.Add(assignment);
    }
}

补充说明

如果API可能返回其他类型的Target(比如AllDevicesAssignmentTarget、ExclusionGroupAssignmentTarget等),可以用分支判断处理不同情况:

switch (item.Target)
{
    case GroupAssignmentTarget groupTarget:
        assignment.GroupID = groupTarget.GroupId;
        break;
    case AllDevicesAssignmentTarget _:
        // 处理"所有设备"的分配逻辑
        break;
    // 其他Target类型的处理逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:40:09