如何在Microsoft Graph C# SDK中从PlannerAssignments获取PlannerAssignment列表
获取Planner任务分配的详细信息
当你拿到PlannerTask对象后,其Assignments.AdditionalData中存储的是键为用户ID、值为未类型化对象的集合,要提取PlannerAssignment列表,只需将这些未类型化对象反序列化为强类型即可。
方法一:使用System.Text.Json(.NET Core/.NET 5+推荐)
using System.Text.Json; using Microsoft.Graph.Models; // 假设已获取目标PlannerTask实例task var assignmentList = new List<PlannerAssignment>(); foreach (var entry in task.Assignments.AdditionalData) { // 将UntypedObject序列化为JSON字符串 var jsonString = JsonSerializer.Serialize(entry.Value); // 反序列化为PlannerAssignment对象 var assignment = JsonSerializer.Deserialize<PlannerAssignment>(jsonString); if (assignment != null) { assignmentList.Add(assignment); // 读取分配详情,例如: string assignedUserId = assignment.AssignedBy?.UserId; DateTimeOffset? assignedTime = assignment.AssignedDateTime; } }
方法二:使用Newtonsoft.Json(适用于旧版.NET框架)
using Newtonsoft.Json; using Microsoft.Graph.Models; var assignmentList = new List<PlannerAssignment>(); foreach (var entry in task.Assignments.AdditionalData) { var jsonString = JsonConvert.SerializeObject(entry.Value); var assignment = JsonConvert.DeserializeObject<PlannerAssignment>(jsonString); if (assignment != null) { assignmentList.Add(assignment); } }
原理说明:Planner任务分配的结构以用户ID为键存储在AdditionalData中,SDK未直接做强类型映射,通过序列化再反序列化的方式,可将未类型化对象转换为PlannerAssignment,从而读取assignedBy、assignedDateTime等详细属性。
内容的提问来源于stack exchange,提问作者23W
相关产品推荐
相关产品推荐

