本文整理汇总了C#中IServiceProvider.GetOutboxManager方法的典型用法代码示例。如果您正苦于以下问题:C# IServiceProvider.GetOutboxManager方法的具体用法?C# IServiceProvider.GetOutboxManager怎么用?C# IServiceProvider.GetOutboxManager使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IServiceProvider
的用法示例。
在下文中一共展示了IServiceProvider.GetOutboxManager方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddBrokenTopicRequests
private static void AddBrokenTopicRequests(
IServiceProvider provider,
IEnumerable<JanusMessageInfo> messages)
{
var freshMids = new Dictionary<int, JanusMessageInfo>();
var parentIds = new Dictionary<int, int>();
// Собираем все messageId и parentId
foreach (var msg in messages)
{
freshMids[msg.messageId] = msg;
if (msg.parentId != 0 && !ForumsSubscriptionHelper.IsTrashForum(msg.forumId)) // Skip roots & trash
parentIds[msg.parentId] = msg.messageId;
}
// Удаляем тех родителей, которые уже присутствуют в том же пакете
foreach (var parentId in parentIds.Keys.ToArray())
if (freshMids.ContainsKey(parentId))
parentIds.Remove(parentId);
using (var dbMgr = provider.CreateDBContext())
{
var ids =
dbMgr
.Messages()
.Where(msg => parentIds.Keys.ToArray().Contains(msg.ID))
.Select(msg => msg.ID);
// Удаляем тех родителей, которые присутствуют в БД
foreach (var mid in ids)
parentIds.Remove(mid);
}
// Оборванных веток нет - выходим
if (parentIds.Count <= 0)
return;
provider.LogInfo(
string.Format(
parentIds.Count.GetDeclension(
Resources.BrokenTopicMessage1,
Resources.BrokenTopicMessage2,
Resources.BrokenTopicMessage5),
parentIds.Count,
parentIds.Values.JoinToStringSeries(30).FirstOrDefault()));
// Добавляем оставшиеся в запросы топиков
// TODO: вменяемые строковые константы
foreach (var mid in parentIds.Values)
provider
.GetOutboxManager()
.DownloadTopics
.Add(
Resources.BrokenTopicRequestSource,
mid,
Resources.BrokenTopicRequestHint.FormatWith(freshMids[mid].subject));
}