private ParticipantTable CalculateReplyAllParticipants()
        {
            IParticipant valueOrDefault  = base.StorePropertyBag.GetValueOrDefault <IParticipant>(ItemSchema.From, null);
            IParticipant valueOrDefault2 = base.StorePropertyBag.GetValueOrDefault <IParticipant>(ItemSchema.Sender, null);
            IDictionary <RecipientItemType, HashSet <IParticipant> > dictionary = ReplyAllParticipantsRepresentationProperty <IParticipant> .BuildReplyAllRecipients <IParticipant>(valueOrDefault2, valueOrDefault, this.ReplyToParticipants, base.Recipients.ToDictionary(), ParticipantComparer.EmailAddress);

            ParticipantTable participantTable = new ParticipantTable();

            foreach (KeyValuePair <RecipientItemType, HashSet <IParticipant> > keyValuePair in dictionary)
            {
                participantTable.Add(keyValuePair.Key, keyValuePair.Value);
            }
            return(participantTable);
        }
        private bool TryExtractRecipients(IStorePropertyBag propertyBag, ParticipantTable recipientTable, IList <Participant> replyToParticipants)
        {
            IList <Participant> list = new List <Participant>();

            if (!this.TryGetParticipantsFromDisplayNameProperty(propertyBag, ItemSchema.DisplayTo, list))
            {
                return(false);
            }
            recipientTable.Add(RecipientItemType.To, list.ToArray <Participant>());
            list.Clear();
            if (!this.TryGetParticipantsFromDisplayNameProperty(propertyBag, ItemSchema.DisplayCc, list))
            {
                return(false);
            }
            recipientTable.Add(RecipientItemType.Cc, list.ToArray <Participant>());
            list.Clear();
            if (!this.TryGetParticipantsFromDisplayNameProperty(propertyBag, ItemSchema.DisplayBcc, list))
            {
                return(false);
            }
            recipientTable.Add(RecipientItemType.Bcc, list.ToArray <Participant>());
            return(this.TryGetParticipantsFromDisplayNameProperty(propertyBag, MessageItemSchema.ReplyToNames, replyToParticipants));
        }
        private bool TryGetParticipantsFromReplyAllParticipantsProperty(IStorePropertyBag propertyBag, SmartPropertyDefinition propertyDefinition, out ParticipantTable participantTable)
        {
            participantTable = new ParticipantTable();
            object obj = propertyBag.TryGetProperty(propertyDefinition);

            if (PropertyError.IsPropertyError(obj))
            {
                return(false);
            }
            IDictionary <RecipientItemType, HashSet <string> > dictionary = (IDictionary <RecipientItemType, HashSet <string> >)obj;

            foreach (KeyValuePair <RecipientItemType, HashSet <string> > keyValuePair in dictionary)
            {
                IList <Participant> participants = new List <Participant>();
                if (!this.TryResolveParticipants(keyValuePair.Value, participants))
                {
                    return(false);
                }
                participantTable.Add(keyValuePair.Key, participants);
            }
            return(true);
        }