1

在编译时我们有

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

谢谢

4

1 回答 1

0

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

于 2012-07-31T20:44:57.023 回答