您如何重构此条件以使用多态?

Nat*_*n W 8 .net c# polymorphism

我刚看完YouTube上的Google清洁代码视频(请参阅链接,第一篇文章),关于if从代码中删除语句并使用多态.

观看视频后,我看了一下我在观看视频之前编写的一些代码,并注意到我可以使用这种方法的地方,主要是多次实现相同类型逻辑的地方.举个例子:

我有一些像这样的代码.

public int Number
{
    get
    {
        string returnValue;
        if (this.internalTableNumber == null)
             returnValue = this.RunTableInfoCommand(internalTableName,
                                                    TableInfoEnum.TAB_INFO_NUM);
        else
             returnValue = this.RunTableInfoCommand(internalTableNumber.Value,
                                                    TableInfoEnum.TAB_INFO_NUM);
        return Convert.ToInt32(returnValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

RunTableInfoCommand的作用并不重要,但主要的是我有许多具有完全相同的属性的属性,if唯一改变的是TableInfoEnum.

我想知道是否有人可以帮助我重构这一点,以便它仍然做同样的事情但没有任何if陈述?

Tim*_*vis 8

在看到其中一些(技术上正确的)响应后,这里只是一个注意事项,只是摆脱一个If语句不应该是你唯一的目标,目标应该是使你的代码可扩展,可维护和简单,如果这意味着摆脱一个if语句,很棒,但它本身不应该是一个目标.

在您提供的代码示例中,并且在不了解有关您的应用程序的更多信息的情况下,假设您不会延长过去测试的空值,我认为If(或者甚至是三元)是更易于维护的解决方案坦率地说.