Лучший способ представления вложения файлов в список (c # 3.0) - PullRequest
2 голосов
/ 08 июня 2010

Я написал

List<Attachment> lstAttachment = new List<Attachment>();

            //Check if any error file is present in which case it needs to be send
            if (new FileInfo(Path.Combine(errorFolder, errorFileName)).Exists)
            {
                Attachment unprocessedFile = new Attachment(Path.Combine(errorFolder, errorFileName));
                lstAttachment.Add(unprocessedFile);
            }
            //Check if any processed file is present in which case it needs to be send
           if (new FileInfo(Path.Combine(outputFolder, outputFileName)).Exists)
            {
                Attachment processedFile = new Attachment(Path.Combine(outputFolder, outputFileName));
                lstAttachment.Add(processedFile);
            }

Работает нормально и выдает ожидаемый результат.

В основном я прикрепляю файл к списку в зависимости от того, присутствует файл или нет.

Я ищу любое другое элегантное решение, кроме того, которое я написал.

Причина : Хочу изучить различные способы представления одной и той же программы.

Я использую C # 3.0

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Как насчет небольшого LINQ?

var filenames = new List<string>() 
{
    Path.Combine(errorFolder, errorFilename),
    Path.Combine(outputFolder, outputFilename)
};
var attachments = filenames.Where(f => File.Exists(f))
                           .Select(f => new Attachment(f));
0 голосов
/ 08 июня 2010

выглядит лучше?

...

var lstAttachment = new List<Attachment>();
string errorPath = Path.Combine(errorFolder, errorFileName);
string outputPath = Path.Combine(outputFolder, outputFileName);

AddAttachmentToCollection(lstAttachment, errorPath);
AddAttachmentToCollection(lstAttachment, outputPath);

...

public static void AddAttachmentToCollection(ICollection<Attachment> collection, string filePath)
{
    if (File.Exists(filePath))
    {
        var attachment = new Attachment(filePath);
        collection.Add(attachment);
    }
}
...