SenseNet.DirectoryServices.SyncAD2Portal.GetADGroupMembers C# (CSharp) Метод

GetADGroupMembers() приватный Метод

private GetADGroupMembers ( DirectoryEntry group, SyncTree syncTree ) : ADGroupMember>.Dictionary
group DirectoryEntry
syncTree SyncTree
Результат ADGroupMember>.Dictionary
        private Dictionary<Guid, ADGroupMember> GetADGroupMembers(DirectoryEntry group, SyncTree syncTree)
        {
            var members = new Dictionary<Guid, ADGroupMember>();
            var memberCount = group.Properties["member"].Count;
            AdLog.LogADObject(string.Format("Group contains {0} member(s).", memberCount), group.Path);
            for (int i = 0; i < memberCount; i++)
            {
                string sMemberDN = group.Properties["member"][i].ToString();

                var objSyncTree = GetSyncTreeForObject(sMemberDN);
                if (objSyncTree == null)
                {
                    AdLog.LogWarning(string.Format("AD group contains an object that is not contained in any of the synctrees, group's synctree will be used to retrieve the object (group: {0}, object: {1})", group.Path, sMemberDN));
                    objSyncTree = syncTree;
                }

                using (DirectoryEntry oADMember = objSyncTree.ConnectToObject(sMemberDN))
                {
                    if (oADMember != null)
                    {
                        var guid = Common.GetADObjectGuid(oADMember, _config.GuidProp);
                        if (guid != null)
                        {
                            var userNameProp = oADMember.Properties[_config.UserNameProp];
                            var userNameValue = userNameProp == null ? null : userNameProp.Value;
                            if (userNameValue == null)
                            {
                                AdLog.LogError(string.Format("Property {0} of AD group member \"{1}\" is missing or value is null", _config.UserNameProp, sMemberDN));
                                continue;
                            }

                            members.Add(
                                ((Guid) guid),
                                new ADGroupMember()
                                    {
                                        objType = Common.GetADObjectType(oADMember, _config.NovellSupport),
                                        Path = oADMember.Path,
                                        SamAccountName = userNameValue.ToString()
                                    });
                        }
                    }
                    else
                    {
                        AdLog.LogWarning(string.Format("AD group member could not be retrieved (group: {0}, object: {1})", group.Path, sMemberDN));
                    }
                }
            }
            return members;
        }
        // checks if the AD object corresponding to the given portal guid exists under synchronized path - if not, it should be deleted from portal...