在编译时我们有
using MyNamespace;
这一直有效,但最近需求发生了变化,需要根据用户选择的应用程序类型在运行时处理。
那么,如何在IWizard中使用c#代码添加“Using”命名空间语句?
我知道如何在
下的运行时添加引用 var appProject = project.Object as VSProject;
appProject.References.Add(Mydll);
我想要的是在运行时
using System.IO;
using MyNamespace-> should come at runtime based on the application selected
由于
答案 0 :(得分:0)
我刚刚遇到了类似的问题,虽然它并没有在运行时完全更改命名空间,但它会在运行时从不同的命名空间中获取所有对象等。如果您想要更改名称空间,那么您可能会拥有具有相同名称和接口但具有不同实现的类,否则您的代码将需要更改。如果创建一个新的lib和名称空间,只包含要使用的所有类的接口,则需要执行的操作。然后,您可以使不同命名空间中的类继承这些接口,以便您可以将类编码为仅使用接口而不是特定实现。然后选择要在运行时使用的实现,使用“Dependancy Injection”选择要通过配置文件插入的正确实现,或者让应用程序的其他部分配置注入。 Dependancy Injection可能有点难以开始,但一旦你了解它,它将使你的生活更容易。 Ninject是一个很好的简易依赖注入框架。