在现代编程中,'#IF DEBUG'被弃用吗?

Mic*_*ael 5 c#

这是我的第一个StackOverflow问题,所以要好!:-)

我最近在一些C#源代码中遇到了以下示例:

public IFoo GetFooInstance()
{
    #IF DEBUG
        return new TestFoo();
    #ELSE
        return new Foo();
    #ENDIF
}
Run Code Online (Sandbox Code Playgroud)

这引出了我这些问题:

  1. "#IF DEBUG"的使用是否被非正式弃用?如果不是什么被认为是一个很好的实施使用?
  2. 使用类工厂和/或MOQ,RhinoMocks等工具,如何实现上述示例?

小智 6

使用IoC容器,整个函数变得多余,而不是调用GetFooInstance,您的代码类似于:

ObjectFactory.GetInstance<IFoo>();
Run Code Online (Sandbox Code Playgroud)

IoC容器的设置可以是代码,也可以是配置文件.