本文整理汇总了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>()));
});
}
示例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;
});
});
}