我有一些代码引用了一个外部的dll,在生产中它将由工厂加载。我的程序集不应直接引用该dll,它将在运行时使用assembly.load()加载。
这一切都很好,但是当涉及到调试时,我希望能够像使用类似
new MyConcreteObject()
.
我知道我可以使用if-endif在调试/发布中不同地编译代码,但是我也可以有一个只附加在调试/发布中的引用吗?
如果可以的话,我应该这样做,我该怎么做?如果没有,如何
应该
我要这么做?
目前我有:
public class ObjectFactory
{
public IObject CreateObject(string objectType)
{
/* Code to load and return the concrete object specified in the app.config */
}
}
public class Program
{
public void Main(string[] args)
{
IObject obj = ObjectFactory.CreateObject("MyObject, MyObjectLibrary");
obj.DoYourStuff();
}
}
因此,现在我想单步执行“doyourstuff()”方法的代码,我不想对加载我的对象的行进行注释,并将其替换为:
IObject obj = new MyObject();
然后需要一个指向myObjectLibrary dll的项目引用,这个项目引用需要我删除引用并取消对createObject()调用的注释,而不是注释掉new在具体对象上的行。
有道理?