private IEnumerable <TElement> Load(IEnumerable <Tuple <Id <FileInProject>, DocumentPath> > withFileIdsAndInfos) { List <Tuple <Id <FileInProject>, DocumentPath, TElement> > toLoad = new List <Tuple <Id <FileInProject>, DocumentPath, TElement> >(); foreach (var fileInfo in withFileIdsAndInfos) { TryAddToLoadList(toLoad, fileInfo.Item1, fileInfo.Item2); } List <TElement> result = m_loader(toLoad.Select(t => Tuple.Create(t.Item1, t.Item2))).ToList(); using (m_suppressibleGotChanged.SuppressCallback()) { for (int i = 0; i < result.Count; i++) { var conversation = result[i]; TElement existing = toLoad[i].Item3; m_data[conversation.Id] = conversation; if (existing != null) { Reloaded.Execute(existing, conversation); } else { Added.Execute(conversation); } } } return(this); }
public TElement New(DirectoryInfo path) { TElement conversation = m_makeEmpty(path); m_data.Add(conversation.Id, conversation); Added.Execute(conversation); return(conversation); }