首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构if-else语句检查不同的文件扩展名

重构if-else语句检查不同的文件扩展名
EN

Stack Overflow用户
提问于 2013-03-01 03:47:02
回答 5查看 1.3K关注 0票数 1

我有一段我觉得可以清理的代码(我可能是错的),但我想看看是否有人能给我一个建议,让它变得更“更好”。

代码语言:javascript
复制
string getExt = Path.GetExtension(DocumentUNCPath.Text);
        var convertFileId = Guid.NewGuid();
        var convertFilePath = @"c:\temp\" + convertFileId + ".pdf";


        if (getExt == ".doc" || getExt == ".docx" || getExt == ".txt" || getExt == ".rtf")
        {
            WordToPdf(convertFilePath);

        }
        else if (getExt == ".xlsx" || getExt == ".xls")
        {
            ExcelToPdf(convertFilePath);
        }
        else if (getExt == ".jpg" || getExt == ".png" || getExt == ".jpeg" || getExt == ".JPG" || getExt == ".PNG")
        {
            ImgToPDF(convertFilePath);
        }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-01 03:58:40

以下代码最初可能更多,但可以更好地扩展。

在方法之外:

代码语言:javascript
复制
    public static readonly List<string> WorkExtensions = new List<string> { ".doc", ".docx", ".txt", ".trf" };
    public static readonly List<string> ExcelExtensions = new List<string> { ".xlsx", ".xls" };
    public static readonly List<string> ImageExtensions = new List<string> { ".jpg", ".png", ".jpeg" };

方法内部:

代码语言:javascript
复制
    string getExt = Path.GetExtension(DocumentUNCPath.Text);
    var convertFileId = Guid.NewGuid();
    var convertFilePath = @"c:\temp\" + convertFileId + ".pdf";

    getExt = getExt.ToLower();

    if (WorkExtensions.Contains(getExt))
    {
        WordToPdf(convertFilePath)
    }
    else if (ExcelExtensions.Contains(getExt))
    {
        ExcelToPdf(convertFilePath);
    }
    else if (ImageExtensions.Contains(getExt))
    {
        ImgToPdf(convertFilePath);
    }
票数 1
EN

Stack Overflow用户

发布于 2013-03-01 03:51:21

将扩展映射到处理程序是处理此类情况的标准方法:

代码语言:javascript
复制
// populate with { ".doc", WordToPdf } and similar pairs
Dictionary<string, Action<string> > handlers = ... 


// find and call handler by extension 
// (use TryGetValue to check for existence if needed)
handlers[getExt]( convertFilePath );
票数 15
EN

Stack Overflow用户

发布于 2013-03-01 03:51:25

你可以这样做

代码语言:javascript
复制
    switch (getExt.ToUpper()) 
    {    
       case "JPG":    
       case "PNG": 
....
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15144320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档