У меня есть некоторый код, который ссылается на внешнюю 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();
Для этого требуется ссылка на проект, указывающая на DLL-библиотеку MyObjectLibrary, которая потребует, чтобы я удалил ссылку и раскомментировал вызов CreateObject (), а вместо этого закомментировал строку, в которой указано new, для конкретного объекта.
Имеет смысл?