C# 我的案例的代码重构

C# 我的案例的代码重构,c#,C#,重构此代码的最佳方法是什么?有没有更好的方法来重新编码这首曲子 if (doc.fldUpphandlingFilerStatus != null) { if (DocumentFileStatus == Enums.FileStatus.UnpublishedNotice || DocumentFileStatus == Enums.FileStatus.UnpublishedOriginalNotice || DocumentFileStatus ==

重构此代码的最佳方法是什么?有没有更好的方法来重新编码这首曲子

if (doc.fldUpphandlingFilerStatus != null)
{
    if (DocumentFileStatus == Enums.FileStatus.UnpublishedNotice ||
        DocumentFileStatus == Enums.FileStatus.UnpublishedOriginalNotice ||
        DocumentFileStatus == Enums.FileStatus.UnpublishedNewNoticeWithOpicData ||
        DocumentFileStatus == Enums.FileStatus.UnpublishedNewNotice)
    {
        icon = IconType.UnpublishedNotice;
    }
    if (DocumentFileStatus == Enums.FileStatus.PublishedNotice ||
        DocumentFileStatus == Enums.FileStatus.PublishedOriginalNotice)
    {
        icon = IconType.PublishedNotice;
    }
    if (DocumentFileStatus == Enums.FileStatus.UnpublishedContractAward ||
        DocumentFileStatus == Enums.FileStatus.UnpublishedFile ||
        DocumentFileStatus == Enums.FileStatus.UnpublishedFileOtherReason)
    {
        icon = IconType.UnpublishedDocument;
    }
    if (DocumentFileStatus == Enums.FileStatus.PublishedAgreement ||
        DocumentFileStatus == Enums.FileStatus.PublishedContractAward ||
        DocumentFileStatus == Enums.FileStatus.PublishedCourtCase ||
        DocumentFileStatus == Enums.FileStatus.PublishedFile ||
        DocumentFileStatus == Enums.FileStatus.PublishedTender)
    {
        icon = IconType.PublishedDocument;
    }
    if (DocumentFileStatus == Enums.FileStatus.PublishedFileAfterTimeLimit)
    {
        icon = IconType.UnpublishedTenderingPeriod;
    }
    if (DocumentFileStatus == Enums.FileStatus.UnpublishedFileOtherReason)
    {
        icon = IconType.AlwaysUnpublished;
    }
    if (DocumentFileStatus == Enums.FileStatus.EmptyFile ||
        DocumentFileStatus == Enums.FileStatus.FileNotFound)
    {
        icon = IconType.BrokenDocument;
    }
    if (DocumentFileStatus == Enums.FileStatus.UnpublishedLink)
    {
        icon = IconType.UnpublishedLink;
    }
    if (DocumentFileStatus == Enums.FileStatus.PublishedLink)
    {
        icon = IconType.PublishedLink;
    }
}

您可以创建映射字典:

Dictionary<FileStatus, IconType> mapping = new Dictionary<FileStatus, IconType>
{
   {Enums.FileStatus.UnpublishedNotice, IconType.UnpublishedNotice}
   ...
}
我会用字典

Dictionary<Enums.FileStatus, IconType> dict = new Dictionary<Enums.FileStatus, IconType>()
{
    { Enums.FileStatus.UnpublishedNotice , IconType.UnpublishedNotice },
    { Enums.FileStatus.UnpublishedOriginalNotice , IconType.UnpublishedNotice },
    { Enums.FileStatus.UnpublishedNewNoticeWithOpicData , IconType.UnpublishedNotice },
    { Enums.FileStatus.UnpublishedNewNotice, IconType.UnpublishedNotice },
    { Enums.FileStatus.PublishedNotice ,IconType.PublishedNotice },
    { Enums.FileStatus.PublishedOriginalNotice,IconType.PublishedNotice },
    { Enums.FileStatus.UnpublishedContractAward ,IconType.UnpublishedDocument },
    { Enums.FileStatus.UnpublishedFile ,IconType.UnpublishedDocument },
    { Enums.FileStatus.UnpublishedFileOtherReason, IconType.UnpublishedDocument },
    { Enums.FileStatus.PublishedAgreement ,IconType.PublishedDocument },
    { Enums.FileStatus.PublishedContractAward ,IconType.PublishedDocument },
    { Enums.FileStatus.PublishedCourtCase ,IconType.PublishedDocument },
    { Enums.FileStatus.PublishedFile ,IconType.PublishedDocument },
    { Enums.FileStatus.PublishedTender,IconType.PublishedDocument },
    { Enums.FileStatus.PublishedFileAfterTimeLimit,IconType.UnpublishedTenderingPeriod },
    { Enums.FileStatus.UnpublishedFileOtherReason, IconType.AlwaysUnpublished },
    { Enums.FileStatus.EmptyFile , IconType.BrokenDocument },
    { Enums.FileStatus.FileNotFound, IconType.BrokenDocument },
    { Enums.FileStatus.UnpublishedLink,IconType.UnpublishedLink },
    { Enums.FileStatus.PublishedLink,IconType.PublishedLink }
};

icon = dict[DocumentFileStatus];
Dictionary dict=new Dictionary()
{
{Enums.FileStatus.UnpublishedNotice,IconType.UnpublishedNotice},
{Enums.FileStatus.UnpublishedOriginalNotice,IconType.UnpublishedNotice},
{Enums.FileStatus.unpublishednewnotice with opicdata,IconType.UnpublishedNotice},
{Enums.FileStatus.UnpublishedNewNotice,IconType.UnpublishedNotice},
{Enums.FileStatus.PublishedNotice,IconType.PublishedNotice},
{Enums.FileStatus.PublishedOriginalNotice,IconType.PublishedNotice},
{Enums.FileStatus.UnpublishedContractAward,IconType.UnpublishedDocument},
{Enums.FileStatus.UnpublishedFile,IconType.UnpublishedDocument},
{Enums.FileStatus.UnpublishedFileOtherReason,IconType.UnpublishedDocument},
{Enums.FileStatus.PublishedAgreement,IconType.PublishedDocument},
{Enums.FileStatus.PublishedContractAward,IconType.PublishedDocument},
{Enums.FileStatus.PublishedCourtCase,IconType.PublishedDocument},
{Enums.FileStatus.PublishedFile,IconType.PublishedDocument},
{Enums.FileStatus.PublishedTender,IconType.PublishedDocument},
{Enums.FileStatus.publishedFileTerTimeLimit,IconType.unpublishedEnderingPeriod},
{Enums.FileStatus.UnpublishedFileOtherReason,IconType.AlwaysUnpublished},
{Enums.FileStatus.EmptyFile,IconType.BrokenDocument},
{Enums.FileStatus.FileNotFound,IconType.BrokenDocument},
{Enums.FileStatus.UnpublishedLink,IconType.UnpublishedLink},
{Enums.FileStatus.PublishedLink,IconType.PublishedLink}
};
icon=dict[DocumentFileStatus];
开关语句

switch (DocumentFileStatus)
{
    case Enums.FileStatus.UnpublishedNotice:
    case Enums.FileStatus.UnpublishedOriginalNotice:
    case Enums.FileStatus.UnpublishedNewNoticeWithOpicData:
    case Enums.FileStatus.UnpublishedNewNotice:
        icon = IconType.UnpublishedNotice;
        break;
    case Enums.FileStatus.PublishedNotice:
    case Enums.FileStatus.PublishedOriginalNotice:
        icon = IconType.PublishedNotice;
        break;
}

把一些if换成其他if?我们来看看这类工具。你想要的东西对人来说太无聊了。你需要为哪个GUI框架设置图标?WPF?除了像下面的一些建议这样的键值存储之外,您是否想过使用一个好的旧的switch case语句?看起来你基本上是在检查哪个枚举值起作用,所以我首先要做的就是在这里使用一个开关格(而不是首先使用if)
switch (DocumentFileStatus)
{
    case Enums.FileStatus.UnpublishedNotice:
    case Enums.FileStatus.UnpublishedOriginalNotice:
    case Enums.FileStatus.UnpublishedNewNoticeWithOpicData:
    case Enums.FileStatus.UnpublishedNewNotice:
        icon = IconType.UnpublishedNotice;
        break;
    case Enums.FileStatus.PublishedNotice:
    case Enums.FileStatus.PublishedOriginalNotice:
        icon = IconType.PublishedNotice;
        break;
}