如何使用IWizard在运行时添加“使用”语句

时间:2012-06-27 12:08:00

标签: c#-4.0 visual-studio-2012 vsix visual-studio-extensions

在编译时我们有

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

由于

1 个答案:

答案 0 :(得分:0)

我刚刚遇到了类似的问题,虽然它并没有在运行时完全更改命名空间,但它会在运行时从不同的命名空间中获取所有对象等。如果您想要更改名称空间,那么您可能会拥有具有相同名称和接口但具有不同实现的类,否则您的代码将需要更改。如果创建一个新的lib和名称空间,只包含要使用的所有类的接口,则需要执行的操作。然后,您可以使不同命名空间中的类继承这些接口,以便您可以将类编码为仅使用接口而不是特定实现。然后选择要在运行时使用的实现,使用“Dependancy Injection”选择要通过配置文件插入的正确实现,或者让应用程序的其他部分配置注入。 Dependancy Injection可能有点难以开始,但一旦你了解它,它将使你的生活更容易。 Ninject是一个很好的简易依赖注入框架。