当前位置: 首页>>代码示例>>C#>>正文


C# IContentManager.GetMany方法代码示例

本文整理汇总了C#中IContentManager.GetMany方法的典型用法代码示例。如果您正苦于以下问题:C# IContentManager.GetMany方法的具体用法?C# IContentManager.GetMany怎么用?C# IContentManager.GetMany使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IContentManager的用法示例。


在下文中一共展示了IContentManager.GetMany方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: NotificationBatchPartHandler

        public NotificationBatchPartHandler(
            IContentManager contentManager,
            Lazy<IRoleService> roleServiceLazy,
            Lazy<IRepository<UserRolesPartRecord>> userRolesRepositoryLazy)
        {
            OnActivated<NotificationBatchPart>((context, part) =>
            {
                part.RecipientsTypeField.Loader(() =>
                    {
                        var recipientsType = part.Retrieve<string>("RecipientsType");
                        if (string.IsNullOrEmpty(recipientsType)) return NotificationBatchRecipientsType.Role;
                        return (NotificationBatchRecipientsType)Enum.Parse(typeof(NotificationBatchRecipientsType), recipientsType);
                    });

                part.RecipientsTypeField.Setter(recipientsType =>
                    {
                        part.Store("RecipientsType", recipientsType.ToString());
                        return recipientsType;
                    });

                part.AvailableRolesField.Loader(() => roleServiceLazy.Value.GetRoles());

                part.RecipientListField.Loader(() => contentManager.Get(part.RecipientListId));

                part.AvailableRecipientListsField.Loader(() => contentManager.Query(Constants.RecipientListContentType).List());

                part.RecipientListField.Setter(recipientsList =>
                    {
                        part.RecipientListId = recipientsList != null ? recipientsList.ContentItem.Id : 0;
                        return recipientsList;
                    });

                part.ActualRecipientIdsField.Loader(() =>
                    {
                        IEnumerable<int> recipientIds;

                        switch (part.RecipientsType)
                        {
                            case NotificationBatchRecipientsType.Role:
                                recipientIds = userRolesRepositoryLazy.Value.Table
                                    .Where(record => record.Role.Id == part.RecipientsRoleId)
                                    .Select(record => record.UserId);
                                break;
                            case NotificationBatchRecipientsType.RecipientList:
                                recipientIds = part.RecipientList.As<NotificationRecipientsPart>().RecipientIds;
                                break;
                            case NotificationBatchRecipientsType.AdhocRecipients:
                                recipientIds = part.As<NotificationRecipientsPart>().RecipientIds;
                                break;
                            default:
                                throw new InvalidOperationException("Not supported recipient type.");
                        }

                        return recipientIds;
                    });

                part.ActualRecipientsField.Loader(() => contentManager.GetMany<IUser>(part.ActualRecipientIds, VersionOptions.Published, new QueryHints().ExpandParts<UserPart>()));
            });
        }
开发者ID:Lombiq,项目名称:Orchard-User-Notifications,代码行数:59,代码来源:NotificationBatchPartHandler.cs

示例2: NotificationRecipientsPartHandler

        public NotificationRecipientsPartHandler(Lazy<IJsonConverter> jsonConverterLazy, IContentManager contentManager)
        {
            OnActivated<NotificationRecipientsPart>((context, part) =>
            {
                part.RecipientIdsField.Loader(() =>
                {
                    var serializedEntries = part.Retrieve<string>("RecipientsIdsSerialized");
                    if (string.IsNullOrEmpty(serializedEntries)) return Enumerable.Empty<int>();
                    return jsonConverterLazy.Value.Deserialize<IEnumerable<int>>(serializedEntries);
                });

                part.RecipientIdsField.Setter(recipients =>
                {
                    Argument.ThrowIfNull(recipients, "recipients");
                    part.Store<string>("RecipientsIdsSerialized", jsonConverterLazy.Value.Serialize(recipients));
                    return recipients;
                });

                part.RecipientsField.Loader(() => contentManager.GetMany<IUser>(part.RecipientIds, VersionOptions.Published, new QueryHints().ExpandParts<UserPart>()));

                part.RecipientsField.Setter(recipients =>
                    {
                        Argument.ThrowIfNull(recipients, "recipients");
                        part.RecipientIds = recipients.Select(user => user.ContentItem.Id);
                        return recipients;
                    });

                part.RecipientNamesField.Loader(() => string.Join(", ", part.Recipients.Select(user => user.UserName)));

                part.RecipientNamesField.Setter(names =>
                    {
                        if (string.IsNullOrEmpty(names)) return names;

                        var namesArray = names
                            .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                            .Select(name => name.Trim().ToLowerInvariant())
                            .ToArray();

                        // To be very thoughtful this could use IMembershipService instead, but that would mean n queries instead of 1.
                        part.Recipients = contentManager
                            .Query("User")
                            .Where<UserPartRecord>(record => namesArray.Contains(record.NormalizedUserName))
                            .List<IUser>();

                        return names;
                    });
            });
        }
开发者ID:Lombiq,项目名称:Orchard-User-Notifications,代码行数:48,代码来源:NotificationRecipientsPartHandler.cs


注:本文中的IContentManager.GetMany方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。