本文整理汇总了C#中Models.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# Models.Clone方法的具体用法?C# Models.Clone怎么用?C# Models.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Models
的用法示例。
在下文中一共展示了Models.Clone方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SendInvitations
//I want to change this so it returns the final list of initations, but I don't know how.
public void SendInvitations(Models.Invitation invitation, IList<Models.Friend> friends, int waitTime ,int TargetTotalGuests,string message, int limit = 1 )
{
//List to keep invitations
var InvitationList = new List<Invitation>();
//max number of people to contact at a time
Limit = limit;
//Populate the Friend invitation list
foreach (var friend in friends)
{
var friendInvitation = invitation.Clone(friend);
friendInvitation.SetTimeout(waitTime);
friendInvitation.invitationStatusChanged += InvitationOnInvitationStatusChanged;
InvitationList.Add(friendInvitation);
}
//While we have not reached the target number of people we want to invite, and there are still people
//pending or not yet sent, do stuff!
while (InvitationList.Count(x => x.Status == InvitationStatus.Yes) != TargetTotalGuests
|| InvitationList.Count(x => x.Status == InvitationStatus.Pending) != 0
&& InvitationList.Count(x => x.Status == InvitationStatus.NotYetSent) != 0)
{
//while we have not reached the limit of people we want pending, send messages
while (InvitationList.Count(x => x.Status == InvitationStatus.Pending) != limit)
{
//might want to keep track of priority, but this might work if list is not shuffeled.
//find the first person not yet send and send to them.
InvitationList.First(x => x.Status == InvitationStatus.NotYetSent).SendMessage(message);
}
}
}
示例2: RestoreContentFromArchive
public Models.Content RestoreContentFromArchive(Models.Content restoreFrom)
{
if (restoreFrom == null)
{
throw new CmsException("Nothing to restore from.", new ArgumentNullException("restoreFrom"));
}
if (restoreFrom.Status != ContentStatus.Archived)
{
throw new CmsException("A page content can be restored only from the archived version.");
}
// Replace original version with restored entity data
var originalContent = restoreFrom.Clone();
originalContent.Id = restoreFrom.Original.Id;
originalContent.Version = restoreFrom.Original.Version;
originalContent.Status = ContentStatus.Published;
originalContent.Original = null;
// Save entities
return SaveContentWithStatusUpdate(originalContent, ContentStatus.Published);
}
示例3: SavePreviewOrDraftContentWithStatusUpdate
private void SavePreviewOrDraftContentWithStatusUpdate(Models.Content originalContent, Models.Content updatedContent, ContentStatus requestedStatus)
{
/*
* Edit preview or draft content:
* -> Save as preview or draft - look for preview or draft version in a history list or create a new history version with requested preview status with reference to an original content.
* -> Save draft - just update field and save.
* -> Publish - look if the published content (look for original) exists:
* - published content exits:
* | create a history content version of the published (clone it). update original with draft data and remove draft|preview.
* - published content not exists:
* | save draft content as published
*/
if (requestedStatus == ContentStatus.Preview || requestedStatus == ContentStatus.Draft)
{
var previewOrDraftContentVersion = originalContent.History.FirstOrDefault(f => f.Status == requestedStatus && !f.IsDeleted);
if (previewOrDraftContentVersion == null)
{
if (originalContent.Status == requestedStatus
|| (originalContent.Status == ContentStatus.Preview && requestedStatus == ContentStatus.Draft))
{
previewOrDraftContentVersion = originalContent;
}
else
{
previewOrDraftContentVersion = originalContent.Clone();
previewOrDraftContentVersion.Original = originalContent;
originalContent.History.Add(previewOrDraftContentVersion);
}
}
updatedContent.CopyDataTo(previewOrDraftContentVersion, false, false);
SetContentOptions(previewOrDraftContentVersion, updatedContent);
SetContentRegions(previewOrDraftContentVersion, updatedContent);
previewOrDraftContentVersion.Status = requestedStatus;
repository.Save(previewOrDraftContentVersion);
}
else if (requestedStatus == ContentStatus.Published)
{
var publishedVersion = originalContent.History.FirstOrDefault(f => f.Status == requestedStatus && !f.IsDeleted);
if (publishedVersion != null)
{
var originalToArchive = originalContent.Clone();
originalToArchive.Status = ContentStatus.Archived;
originalToArchive.Original = originalContent;
originalContent.History.Add(originalToArchive);
repository.Save(originalToArchive);
}
updatedContent.CopyDataTo(originalContent, false, false);
SetContentOptions(originalContent, updatedContent);
SetContentRegions(originalContent, updatedContent);
originalContent.Status = requestedStatus;
if (!originalContent.PublishedOn.HasValue)
{
originalContent.PublishedOn = DateTime.Now;
}
if (string.IsNullOrWhiteSpace(originalContent.PublishedByUser))
{
originalContent.PublishedByUser = securityService.CurrentPrincipalName;
}
repository.Save(originalContent);
}
}
示例4: SavePublishedContentWithStatusUpdate
private void SavePublishedContentWithStatusUpdate(Models.Content originalContent, Models.Content updatedContent, ContentStatus requestedStatus)
{
/*
* Edit published content:
* -> Save as draft, preview - look for draft|preview version in history list or create a new history version with requested status (draft, preview) with reference to an original content.
* -> Publish - current published version should be cloned to archive version with reference to original (archive state) and original updated with new data (published state).
* Look for preview|draft versions - if exists remote it.
*/
if (requestedStatus == ContentStatus.Preview || requestedStatus == ContentStatus.Draft)
{
var contentVersionOfRequestedStatus = originalContent.History.FirstOrDefault(f => f.Status == requestedStatus && !f.IsDeleted);
if (contentVersionOfRequestedStatus == null)
{
contentVersionOfRequestedStatus = originalContent.Clone();
}
updatedContent.CopyDataTo(contentVersionOfRequestedStatus, false, false);
SetContentOptions(contentVersionOfRequestedStatus, updatedContent);
SetContentRegions(contentVersionOfRequestedStatus, updatedContent);
contentVersionOfRequestedStatus.Original = originalContent;
contentVersionOfRequestedStatus.Status = requestedStatus;
originalContent.History.Add(contentVersionOfRequestedStatus);
repository.Save(contentVersionOfRequestedStatus);
}
if (requestedStatus == ContentStatus.Published)
{
// Original is copied with options and saved.
// Removes options from original.
// Locks new stuff from view model.
var originalToArchive = originalContent.Clone();
originalToArchive.Status = ContentStatus.Archived;
originalToArchive.Original = originalContent;
originalContent.History.Add(originalToArchive);
repository.Save(originalToArchive);
updatedContent.CopyDataTo(originalContent, false, false);
SetContentOptions(originalContent, updatedContent);
SetContentRegions(originalContent, updatedContent);
originalContent.Status = requestedStatus;
if (!originalContent.PublishedOn.HasValue)
{
originalContent.PublishedOn = DateTime.Now;
}
if (string.IsNullOrWhiteSpace(originalContent.PublishedByUser))
{
originalContent.PublishedByUser = securityService.CurrentPrincipalName;
}
repository.Save(originalContent);
IList<Models.Content> contentsToRemove = originalContent.History.Where(f => f.Status == ContentStatus.Preview || f.Status == ContentStatus.Draft).ToList();
foreach (var redundantContent in contentsToRemove)
{
repository.Delete(redundantContent);
originalContent.History.Remove(redundantContent);
}
}
}