Пример #1
0
        public static PeopleIdentity[] ToPeopleIdentityArray(this ADRecipientOrAddress[] addresses)
        {
            List <PeopleIdentity> list = new List <PeopleIdentity>();

            if (addresses != null && addresses.Any <ADRecipientOrAddress>())
            {
                Dictionary <string, ADRecipient> dictionary = new Dictionary <string, ADRecipient>(StringComparer.OrdinalIgnoreCase);
                IEnumerable <string>             legacyDNs  = from address in addresses
                                                              where address.RoutingType == "EX"
                                                              select address.Address;
                IEnumerable <ADRecipient> enumerable = RecipientObjectResolver.Instance.ResolveLegacyDNs(legacyDNs);
                if (enumerable != null && enumerable.Any <ADRecipient>())
                {
                    foreach (ADRecipient adrecipient in enumerable)
                    {
                        if (!dictionary.ContainsKey(adrecipient.LegacyExchangeDN))
                        {
                            dictionary.Add(adrecipient.LegacyExchangeDN, adrecipient);
                        }
                    }
                }
                IEnumerable <string> addresses2 = from address in addresses
                                                  where address.RoutingType == "SMTP"
                                                  select address.Address;
                enumerable = RecipientObjectResolver.Instance.ResolveSmtpAddress(addresses2);
                if (enumerable != null && enumerable.Any <ADRecipient>())
                {
                    foreach (ADRecipient adrecipient2 in enumerable)
                    {
                        string key = adrecipient2.PrimarySmtpAddress.ToString();
                        if (!dictionary.ContainsKey(key))
                        {
                            dictionary.Add(key, adrecipient2);
                        }
                    }
                }
                foreach (ADRecipientOrAddress adrecipientOrAddress in addresses)
                {
                    ADRecipient entry = null;
                    if (dictionary.TryGetValue(adrecipientOrAddress.Address, out entry))
                    {
                        list.Add(entry.ToPeopleIdentity());
                    }
                    else
                    {
                        list.Add(adrecipientOrAddress.ToPeopleIdentity());
                    }
                }
            }
            if (!list.Any <PeopleIdentity>())
            {
                return(null);
            }
            return(list.ToArray());
        }