我在从 DirectoryObject 中提取一些非默认属性时遇到了奇怪的错误,可以使用一些指导。
我正在使用以下内容来获取当前用户的经理
GraphServiceClient graphServiceClient = this.GetGraphServiceClient();
var managerInfo = await graphServiceClient.Me.Manager
.Request()
.Select("onPremisesSamAccountName,displayName,jobTitle,userPrincipalName,directreports")
.GetAsync();
user.ManagerUpperEmail = GetDirObjPropertyValue(manager, "UserPrincipalName");
user.ManagerUpperName = GetDirObjPropertyValue(manager, "DisplayName");
user.ManagerUpperID = GetDirObjPropertyValue(manager, "onPremisesSamAccountName");
当我在 VS2019 Inspector 中查看 managerInfo 对象时,我能够看到所有这些属性(如下所示),但是当我尝试使用以下命令访问它时,由于显示的部分,我在 var3 赋值中收到 NullReferenceException var2 返回 null。当针对属性 DisplayName 和 UserPrincipalName
运行相同的代码时,不会发生这种情况 private string GetDirObjPropertyValue(DirectoryObject dObj, string key)
{
var var1 = dObj.GetType();
var var2 = dObj.GetType().GetProperty(key);
var var3 = dObj.GetType().GetProperty(key).GetValue(dObj, null);
return (String) dObj.GetType().GetProperty(key).GetValue(dObj, null);
}
在下面返回一个空值。这非常适合 DisplayName 和 UserPrincipalName 等默认属性。
属性名称区分大小写。 您需要使用
OnPremisesSamAccountName
而不是 onPremisesSamAccountName
。