gpt4 book ai didi

c# - 如何确定 C# 中是否存在动态属性

转载 作者:行者123 更新时间:2023-11-30 23:03:44 24 4
gpt4 key购买 nike

我正在使用下面的代码迭代一些 Active Directory PrincipalSearcher Principal 结果。在我将结果属性分配给我的 _user 对象的 foreach 循环中,我可以中断调试并查看 result.EmailAddress 值。当我尝试将 result.EmailAddress 分配给 _user.EmailAdress 时,代码甚至无法编译。我猜 EmailAddress 是结果的动态属性。有没有办法检查此属性,以便我可以将用户 AD 电子邮件地址添加到我的 _user 对象?

 private static void GetAllActiveDirectoryUsers()
{
PrincipalContext context = new PrincipalContext(
ContextType.Domain, Environment.UserDomainName);

UserPrincipal user = new UserPrincipal(context);


// create a principal searcher for running a search operation
PrincipalSearcher pS = new PrincipalSearcher(user);

// run the query
PrincipalSearchResult<Principal> results = pS.FindAll();

foreach (Principal result in results)
{

Console.WriteLine(result.DisplayName);
Console.ReadKey();

User _user = new User();

_user.Description = result.Description;
_user.DisplayName = result.DisplayName;
_user.DistinguishedName = result.DistinguishedName;
_user.Guid = result.Guid ?? null;
_user.Name = result.Name;
_user.Sid = result.Sid?.ToString();

Users.Add(_user);
}

}

最佳答案

这不是动态属性。 EmailAddressUserPrincipal 类的一个属性,它继承自 Principal。您的 result 实际上是 UserPrincipal 类型,这就是为什么您在调试时会看到该属性,但您是以 Principal 类型访问它的原因,这没有名为 EmailAddress 的属性,因此您无法在代码中使用它。

如果您想要访问 EmailAddress 属性,您需要将您的 result 转换为 UserPrincipal。由于您确定所有结果都是用户对象,因此您可以在 foreach 中执行此操作:

foreach (UserPrincipal result in results)

关于c# - 如何确定 C# 中是否存在动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49762783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com