使用C#/.Net Google Admin API如何为无关联的用户新增首个关系
问题根因
当Google侧用户从未设置过任何关联关系(包括经理、助理等)时,API返回的User对象的Relations属性不会被初始化为空集合,而是直接为null,所以直接调用Add/Insert方法就会触发空引用异常。而已经设置过经理的用户,Relations已经被初始化为集合对象,所以可以直接修改下标对应的值。
解决方案
在操作Relations属性前,先判断是否为null,如果为null则手动初始化集合即可,修改后的代码逻辑如下:
User UpdateUser = service.Users.Get(sUserEmail).Execute(); // 此处为SQL查询逻辑 UserRelation UR = new UserRelation(); UR.Type = "manager"; UR.Value = sManagersEmail; // 新增初始化判断逻辑 if (UpdateUser.Relations == null) { UpdateUser.Relations = new List<UserRelation>(); } UpdateUser.Relations.Add(UR); service.Users.Update(UpdateUser, sUserEmail).Execute();
如果需要避免重复添加经理关联,可以补充已存关联的校验逻辑:
var existManager = UpdateUser.Relations.FirstOrDefault(r => r.Type == "manager"); if (existManager != null) { existManager.Value = sManagersEmail; } else { UpdateUser.Relations.Add(UR); }
内容的提问来源于stack exchange,提问作者Goldilox
相关产品推荐
相关产品推荐

