hMailServer.Entities.Message.Clone C# (CSharp) Метод

Clone() публичный Метод

public Clone ( ) : Message
Результат Message
        public Message Clone()
        {
            var clone = (Message) MemberwiseClone();

            clone.Recipients = new List<Recipient>();

            foreach (var recipient in Recipients)
            {
                clone.Recipients.Add(recipient.Clone());
            }

            return clone;
        }

Usage Example

        public Task<Message> CreateAccountLevelMessageAsync(Message message, Account account, Folder folder)
        {
            if (message == null)
                throw new ArgumentNullException(nameof(message));
            if (account == null)
                throw new ArgumentNullException(nameof(account));

            var clonedMessage = message.Clone();
            clonedMessage.Id = 0;
            clonedMessage.AccountId = account.Id;
            clonedMessage.FolderId = folder.Id;
            clonedMessage.Filename = Path.ChangeExtension(Guid.NewGuid().ToString(), ".eml");
            clonedMessage.Recipients = new List<Recipient>();

            var messageFileFullPath = GetMessageFullFileName(account, clonedMessage);
            var messageDirectory = Path.GetDirectoryName(messageFileFullPath);

            // TODO: Should be possible to do this asynchronously.
            Directory.CreateDirectory(messageDirectory);
            File.Copy(Path.Combine(_dataDirectory, message.Filename), messageFileFullPath);

            return Task.FromResult(clonedMessage);
        }
Message